javascript - ?? || &&运算符

56 阅读1分钟

?? 空值合并运算符

??左侧的操作数为nullundefined,则取??右侧的值,否则取??左侧的。

空字符串也是取左侧的值,注意与||区分开,因为||转化为假的值有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

运算符优先级

=== > && > || > ?? > ? :