ECMAScript 操作符和流程控制、函数

ECMAScript 操作符和流程控制、函数
苏丙榅1. 运算符
1.1 算术运算符
Javascript中支持的算术运算符有五种,分别为:
+
:加号-
:减号*
:乘号/
:除号%
:取余
1.2 一元运算符
一元运算符:只有一个操作数的运算符。
前置 ++ / - -
- 前置++:先加1,后参与运算
- 前置- - :先减1,后参与运算
后置 ++ / - -
- 后置++:先参与运算,后加1
- 后置- - :先参与运算,后减1
1 | var iNum1 = 10; |
1.3 逻辑运算符
逻辑运算符又叫布尔运算符,逻辑运算符参与的表达式返回一个布尔类型的值。Javascript中的逻辑运算符和C/C++中的逻辑运算符是一样的。
&&
:逻辑与,两个操作数同时为true,结果为true,否则为false||
:逻辑或,两个操作数有一个为true,结果为true,否则为false!
:逻辑非,true 变 false,false 变 true
。
1.4 关系运算符(比较运算符)
关系运算符又叫比较运算符,关系运算符参与的表达式返回一个布尔类型的值。Javascript中的关系运算符有如下8种:
<
:小于>
:大于> =
:大于等于< =
:小于等于==
:等于! =
:不等===
:全等于! ==
:不等
==
与===
的区别:
==
只进行值的比较===
要求类型和值同时相等,则相等
1 | var result = '55' == 55; // true |
1.5 赋值运算符
Javascript中的关系运算符有6种,分别为:=
、+=
、 -=
、*=
、/=
、%=
1 | var num = 0; |
1.6 位运算
在JavaScript中, 按位与 &
、按位或|
、按位异或^
的运算规则和C++一样,示例如下:
1 | var iNum1 = 10 & 7; // 1010 & 0111 = 0010 = 2 |
2. 流程控制
不管是什么样语言,我们编写的程序一般有三种基本结构:
顺序结构
:从上到下执行的代码就是顺序结构,程序默认就是由上到下顺序执行的分支结构
:根据不同的情况(条件),执行对应代码块。循环结构
:重复做一件事情
2.1 分支结构
if 语句
1 | if (/* 条件表达式 */) { |
if … else 语句
1 | if (/* 条件表达式 */){ |
if … else if … else 语句
1 | if (/* 条件1 */){ |
三元运算符
三元运算符是对 if ... else
语句的一种简化写法,语法如下:
1 | expr1 ? expr2 : expr3 |
当 expr1 的值为 true 时得到的值为 expr2,当 expr1 的值为 false 时得到的值为 expr3。
1 | // 取出两个数中值比较大的那一个 |
switch语句
语法格式:
1 | switch (expression) { |
- break可以省略,如果省略,代码会继续执行下一个case
- switch 语句在比较值时使用的是全等操作符, 因此不会发生类型转换(例如,字符串’10’ 不等于数值 10)
2.2 循环结构
在 javascript中,循环语句有三种:while、do..while、for
循环。
while语句
基本语法:
1 | // 当循环条件为true时,执行循环体, |
代码示例:
1 | // 计算1-100之间所有数的和 |
do…while语句
do...while
循环和while
循环非常像,二者经常可以相互替代,但是do...while
的特点是不管条件成不成立,都会执行一次
。
基础语法:
1 | do { |
代码示例:
1 | // 初始化变量 |
for语句
while
和do...while
一般用来解决无法确认次数的循环。for
循环一般在循环次数确定的时候比较方便。
for循环语法:
1 | // for循环的表达式之间用的是;号分隔的,千万不要写成, |
执行顺序:1243 ---- 243 ---- 243
(直到循环条件变成false)
- 初始化表达式
- 判断表达式
- 自增表达式
- 循环体
for … in 语句
1 | for(var item in 集合){ |
每循环一次,从集合中取出一个元素,并将这个元素存储到变量 item
中。
continue和break
break
:立即跳出整个循环,即循环结束,开始执行循环后面的内容(直接跳到大括号)continue
:立即跳出当前循环,继续下一次循环(跳到 i++ 的地方)
3. 函数
把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,给它起个名字(函数名),这样在后续开发中可以基于这个名字反复调用。
3.1 函数的定义
- 函数定义
1 | // 无参函数 |
- 函数表达式
1 | var fn = function() { |
函数被定义的时候,函数体并不会执行,只要当函数被调用的时候才会执行。函数一般都用来干一件事情,需用使用动词 + 名词,表示做一件事情 tellStory
、 sayHello
等。
3.2 函数的调用
调用函数的语法:
1 | // 无参函数调用 |
函数体只有在调用的时候才会执行,如果函数有参数调用时需要给其指定实参,如果没有参数参数列表空着即可,一个函数可以被重复调用多次。
代码示例:
1 | // 函数定义 |
3.3 函数的返回值
当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西,也就是返回值。在函数体中可以通过return
返回一个值。
1 | // 定义一个带返回值的函数 |
关于函数返回值,我们需要知道一下几个细节:
如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:
undefined
如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:
undefined
函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说
return 后面的所有其他代码都不会再执行。
3.4 匿名函数
匿名函数顾名思义就是没有名字的函数,举例说明:
1 | function () { |
匿名函数定义之后是不能被执行的,调用匿名函数有两种方式:
将匿名函数赋值给一个变量,这样就可以通过变量进行调用
1
2
3
4
5
6// 把函数赋值给一个变量
var a = function () {
console.log("我是要成为海贼王的男人!!!");
};
// 调用
a();匿名函数自调用
1
2
3(function () {
console.log("我是要成为海贼王的男人!!!");
})();
因为函数也是一种类型,可以把函数A作为另一个函数B的参数,这样在函数中B中就可以调用函数A了。另外,可以把函数可以作为返回值从函数内部返回,这种用法在Javascript中很常见。
1 | function fn(b) { |