//栗子:
let a = 0
let b = 1
let c = b.value?.a
a = a || 2
b = b && 2
c = c ?? 2
console.log(a+b+c)
|| 或运算
会存在短路运算
let a = 0;
a = a || 2;
- 如果a为true,就不会执行后面|| 2;
- 如果a为false,会执行后面 || 2;
&& 且运算
会存在短路运算,都为true,才会是true
let b = 1;
b = b && 2;
如果b为true,会继续执行&& 2; 如果是true,就取后面的值。
如果b为false,直接取b的值。
?. 可选链运算符
obj?.value 如果obj不存在,obj?.value直接返回undefind。
?? 空值合并运算符
只用来判断null和undefind,如果??前面的值是undefind或者null,就返回后面的值。
栗子结果: