?? 空值合并运算符
当??左侧的操作数为null或undefined,则取??右侧的值,否则取??左侧的。
空字符串也是取左侧的值,注意与
||区分开,因为||转化为假的值有5种
const nullValue = null;
let target = nullValue ?? [];
console.log(target); // []
const number = 28;
target = number ?? 0;
console.log(target); // 28
|| 或运算符
如果||两边的操作数是布尔值,则返回或逻辑的结果,就是之后要有一个是true则返回true.
如果两边不全是布尔值,比如是字符串或其他非布尔值操作数,则左侧能转化为真的话就返回左侧的值,左侧为假的话就返回右侧的值。
转化为假的值包括:
undefined
null
空字符串
0
NaN
true || true; //true
'cat' || 'dog'; // cat
false || 'cat'; // cat
&& 与运算符
与||相反,第一个遇到假值就立刻返回
true && true; // true
true && false; // false
false && true; // false
false && 3 === 4; // false
"Cat" && "Dog"; // Dog
false && "Cat"; // false
"Cat" && false; // false
"" && false; // ""
false && ""; // false
运算符优先级
=== > && > || > ?? > ? :