JS中的运算符: & | 和 &&、||、??
&
和|
是位运算符。&&
和||
是逻辑运算符;
1、位运算符(与): &
只有都是1相与结果才是1。其余结果为0
0 & 0 // => 0
1 & 0 // => 0
1 & 1 // => 1
11111 & 00010 // => 00010
2、位运算符(或): |
只要有一个1相或结果为1。
0 | 0 // => 0
1 | 0 // => 1
1 | 1 // => 1
11111 | 00010 // => 11111
3、逻辑运算符(且): &&
- 只要
&&
前面是false
,结果都返false
。 - 只要
&&
前面是true
,结果都将返&&
后面的值。
0 && 2 // => 0
1 && 3 // => 3
1 && 0 // => 0
4、逻辑运算符(或): ||
- 只要
||
前面为false
,都返回||
后面的值。 - 只要
||
前面为true
,都返回||
前面的值。
0 || 2 // => 2
1 || 3 // => 1
1 || 0 // => 1
5、判空运算符 : ??
- 只要
??
前面为null
或undefined
,则返回??
后面的值。 - 否则返回前面的值
注意区别:??
与 ||
??
只判断是否为空(null 或 undefined)||
判断的是 True 或 False
0 ?? 2 // => 0
false ?? 2 // => false
null ?? 3 // => 3
undefined ?? 0 // => 0
Number(undefined) // => NaN
Number(undefined) ?? 2 // => NaN ,而不是2