JS中的运算符(&、&&、|、||)
JS中的运算符
1. 逻辑运算符
js中的逻辑运算符有&&和||,与其他语言的逻辑运算符一样,返回结果为Boolean。
1.1 &&
说明:逻辑与运算
场景:a&&b
- a为false,无需判断b,直接返回false
- a为true,根据b返回值
1.2 ||
说明:逻辑或运算
场景:a||b
- a为true,无需判断b,直接返回true
- a为false,根据b返回值
1.3 执行顺序
说明:&&优先于||,左优先于右
场景:a||b&&c||d&&e,相当于a||(b&&c)||(d&&e),从左往右执行。
举例:
可在F12-console执行以下:
var a=new Object(),b=0,c=Number.NaN,d=1,e="Hello";
console.log(a || b && c || d && e);
执行结果为:
{}
分析:
1. 先执行b&&c,b=0=>b=false,因此b&&c<=>b
a||b && c||d && e<=>a||b||d&&e
2. 再执行d&&e,d=1<=>d=true,因此d&&e<=>e
a||b||d&&e<=>a||b||e
3.a=new Object()<=>a=true无需执行后续,因此输出a,也就是new Object()
2. 位运算符
js中的位运算符有逻辑位运算符(&、|、^、~)和移位运算符(<<、>>、>>>),做二进制计算。
2.1 &
- 计算方式如下:
计算 | 结果 |
---|---|
1&1 | 1 |
1&0 | 0 |
0&1 | 0 |
0&0 | 0 |
- 举例解析
console.log(12 & 5);
>4
解析:
12=>1100
5 =>0101
=>0100=>4
2.2 |
- 计算方式如下:
计算 | 结果 |
---|---|
1|1 | 1 |
1|0 | 1 |
0|1 | 1 |
0|0 | 0 |
- 举例解析
console.log(12 | 5);
>13
解析:
12=>1100
5 =>0101
=>1101=>13
2.3 运算顺序
说明:&》|
举例:
console.log(12|5&12|5)
>13
解析:
1. 5&12=>4
12|5&12|5=>12|4|5
2. 12|4
12=>1100
4 =>0100
=>1100=>12
3.12|5=>13
3. 常见对象的布尔值
说明:6false外都是true
对象 | Boolean |
---|---|
"" | false |
0 | false |
false | false |
null | false |
undefined | false |
NAN | false |
其他 | true |
4. 运算顺序
- 位运算符》逻辑运算符
- & 》| 》&& 》||
- 其他运算符顺序详见另一篇文章