JavaScript06 - 操作符
操作符
加、- 减 、 * 乘、/ 除、% 取余数,即余数即为所得值,() 提高优先级
赋值运算符
简单的赋值操作符用等号(=)表示,它的作用是把右侧的值赋值给左侧的变量
简单的赋值操作符由等号(=)表示,它的作用就是把右侧的值赋值给左侧的变量,如下所示:
如果在等号(=)前面再添加算术运算符的话,就可以完成复合赋值操作。如下所示:
第二行代码可以用一个复合赋值来代替:
每个算术操作符都有对应的复合赋值操作符,如下图所示:
自增自减操作符
i++ ++i
在不参与运算的情况下:它们都是自增 1
在参与运算的情况下,++写在后面,先参与运算,然后加 1;++写在前面,在参与运算前,i 先加 1,然后再参与运算。
i-- --i
在不参与运算的情况下,都是自减 1
在参与运算的情况下,--写在后面,先参与运算,然后减 1;--写在前面,在参与运算前,i 先减 1,然后再参与运算。
逻辑运算符
逻辑与(&&)
逻辑与操作符由符号 &&
表示,有两个操作数,如下例所示
逻辑与的真值表如下:
逻辑与的操作数不仅仅是布尔值,还可以应用于任何类型的操作数。此时,它遵循下列规则:
如果两个操作数被转换成布尔值第一个是
true
,则返回第二个操作数;如果两个操作数被转换成布尔值第一个为
false
,则返回第一个操作数;
逻辑或(||)
逻辑或操作符由两个竖线符号(||)表示,由两个操作数,如下所示:
逻辑或的真值表如下:
与逻辑与操作符一样,逻辑或的操作数也不仅限于布尔值,它也可以是其他类型的操作数。此时,它遵循下列规则:
如果两个操作数被转换成布尔值第一个是
true
,则返回第一个操作数;如果两个操作数被转换成布尔值第一个为
false
,则返回第二个操作数;
与逻辑与操作符一样,逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为 true,就不会对第二个操作数求值了。示例如下:
逻辑非(!)
逻辑非操作符由一个叹号(!)表示,可以应用于 ECMAScript 中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。逻辑非操作符遵循下列规则:
如果操作数被转换成布尔值之后是 true,直接返回布尔值:false;
如果操作数被转换成布尔值之后是 false,直接返回布尔值:true;
下面举几个例子:
关系运算符
>
大于号
<
小于号
>=
大于或等于
<=
小于或等于
==
等于
===
全等于
!=
不等于
!==
不全等于
小于(<)、大于、小于或等于、大于或等于这几个关系操作符用于对两个值进行比较,比较的规则与数学中的一样。这几个操作符都返回一个布尔值。
当参与比较的操作数是非数值类型时,则会先进行数据类型转换,然后再参与比较。比较规则如下:
如果两个操作数都是数值,则执行数值比较。
如果两个操作数都是字符串,则比较两个字符串对应的字符编码值。
如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。
如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。
如果一个操作数是对象,则调用这个对象的
valueOf()
方法,将得到的结果按照前几条规则执行比较。如果对象没有valueOf()
方法,则调用toString()
方法,将得到的结果按照前几条规则执行比较。
示例:
==和===的用法
对于基本数据类型来说:==当类型相等时,判定值是否相等,当类型不相等时,转换成相同的类型后,比较值是否相等。===只有当类型相等时,判定值是否相等。
连比的写法
比如,想要查看 2
这个数字,是不是在 3
和 15
之间,像下面这样写是错误的:
这是因为,计算机会先比较 3 < 2
,得到的结果是 false
。然后再比较 false < 15
,false
会被隐式转换为0
,所以 0 < 15
的结果是 true
。
正确的写法应该先拆开,中间用一个 &&
连接。也就是说:3 小于 2 且 2 小于 15 。
条件运算符(三元运算符)
语法:
表达式 ? 如果表达式结果为 true 执行这里的代码 1 : 如果表达式结果为 false 执行冒号后面的代码 2 ;
执行顺序:
判断条件表达式是否为
true
。如果为
true
,执行问号(?
)后面的代码。如果为
false
,执行冒号(:
)后面的代码。
运算符优先级
常用运算符优先级从高到底
() 优先级最高
一元运算符 ++ -- !
算数运算符 先* / % 后 + -
关系运算符 > >= < <=
相等运算符 == != === !==
逻辑运算符 先 && 后||
赋值运算符 =
版权声明: 本文为 InfoQ 作者【桃夭十一里】的原创文章。
原文链接:【http://xie.infoq.cn/article/af6ada2d93b7a862a20d142bd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论