操作符
操作符包括算数操作符、位操作符、关系操作符和相等操作符。
一元操作符
1.递增和递减操作符
直接借鉴自C,分为前置型和后置型。
后置与前置的区别是递增递减操作是在包含它们的语句被求值之后才执行的。
var num1=2;
var num2=20;
var num3=num1-- +num2; // 22
var num4=num1+num2; // 21
2.一元加和减操作符
主要用于基本的算术运算,也可用于转换数据类型。
位操作符
- 按位非(NOT) 按位非操作符由一个波浪线(~)表示,执行的结果是返回数值的反码。
- 按位与(AND) 按位与操作符由一个和号字符(&)表示。真值表如下
第一个数值的位 第二个数值的位 结果 1 1 1 1 0 0 0 1 0 0 0 0 -
按位或(OR) 按位或操作符由一个竖线符号( | )表示。真值表如下
第一个数值的位 第二个数值的位 结果 1 1 1 1 0 1 0 1 1 0 0 0 - 按位异或(XOR) 按位异或操作符由一个插入符号(^)表示,真值表如下
第一个数值的位 第二个数值的位 结果 1 1 0 1 0 1 0 1 1 0 0 0 - 左移 左移操作符由两个小于号(<<)表示。这个操作符会将数值的所有位向左移动指定的位数
- 有符号的右移 有符号的右移由两个大于号(>>)表示。这个操作符会将数值向右移动但保留符号位。
- 无符号的右移 无符号的右移由三个大于号(>>>)表示。对正数而言,无符号右移与有符号右移结果相同;对负数而言,无符号右移操作符会把负数的二进制码当成正数的二进制码。
布尔操作符
- 逻辑非 由一个叹号(!)表示,可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。
alert(!false); //true
alert(!"blue"); //false
alert(!0); //true
alert(!NAN); //true
alert(!""); //true
alert(!12345); //false
alert(!!0); //false
alert(!!NAN); //false
alert(!!""); //false
alert(!!12345); //true
- 逻辑与 由两个和号(&&)表示,有两个操作数。逻辑与的操作值如下:
第一个操作数 | 第二个操作数 | 结果 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值,此时遵循如下规则:
- 如果第一个操作数是对象,则返回第二个操作数;
- 如果第二个操作数是对象,则只有在第一个操作数求值结果为true的情况下才会返回该对象;
- 如果两个操作数都是对象,则返回第二个操作数;
- 如果第一个操作数是null,则返回null;
- 如果第一个操作数是NaN,则返回NaN;
- 如果第一个操作数是undefined,则返回undefined。
逻辑与操作属于短路操作,即如果第一个操作数就能够决定结果,那么就不会再对第二个操作数求值。对于逻辑与操作而言,如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。
- 逻辑或 逻辑或操作符由两个竖线符号表示,有两个操作数。真值表如下:
第一个操作数 第二个操作数 结果 true true true true false true false true true false false false
与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值。
我们可以利用逻辑或的这一行为来避免为变量赋null或undefined值。如:
var myObject=preferredObject||backupObject;
在这个例子中,变量myObject将被赋予等号后面两个值中的一个。变量preferredObject中包含优先赋给变量myObject的值,变量backupObject负责在preferredObject中不包含有效值的情况下提供后备值。如果preferredObject的值不是null,那么它的值将被赋给myObject;如果是null,则将backupObject的值赋给myObject。
乘性操作符
- 乘法 由一个星号(*)表示,用于计算两个数值的乘积,语法类似于C。
- 除法 由一个斜线符号(/)表示,执行第二个操作数除第一个操作数的计算。
- 求模 由一个百分号(%)表示
加性操作符
- 加法 由加号(+)表示。如果有一个操作数是字符串,那么应用如下规则:
如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
如果只有一个是字符串,则将另一个转换成字符串再拼接。
忽视加法操作中的数据类型是编程中最常见的一个错误。
var num1=5;
var num2=10;
var message="The sum of 5 and 10 is"+num1+num2;
alert(message); //"The sum of 5 and 10 is 510"
var message="The sum of 5 and 10 is "+(num1+num2);
alert(message); //"The sum of 5 and 10 is 15"
- 减法 由减号(-)表示
关系操作符
小于,大于,小于等于,大于等于这几个关系操作符用于对两个值进行比较
相等操作符
- 相等和不相等
两个操作符都会先强制转型,然后再比较他们的相等性
- 全等和不全等(===)(!==)
除了在比较前不转换操作数之外,全等和不全等操作符与相等和不相等操作符没有什么区别。全等操作符只在两个操作数未经转换就相等的情况下返回true。