Appearance
布尔判定和短路寻址
短路寻址: 对于短路表达式,只要最终的结果已经确定为真或者假,那么求值过程就直接终止,如 "&&" 和 "||" 、 "??" 、"?." const a = 1 , b = 2;
- a || b;
首先对 a
求值,如果 a
为真值则直接返回 a
- a && b ;
首先对 a
求值,如果 a
为虚值则直接返回 a
- a ?? (b || c)
首先对 a
求值,如果 a
不是 null
或 undefined
则直接返回 a
- a?.b.c
首先对 a
求值,如果 a
是 null
或 undefined
则直接返回 undefined
就像
js
console.log(1 < 2 && 2 < 3) // true
对于这种短路寻址方式我们可以巧用到很多地方
属性默认值
js
let b
if (!a) {
b = "default"
}
// =>
const b = a && "default"
有可能不存在的函数方法
js
if (obj.func) {
obj.func()
}
// =>
obj.func && obj.func()
// 对于这种其实更建议使用 ?. 运算
obj.func?.()