Skip to content

布尔判定和短路寻址

短路寻址: 对于短路表达式,只要最终的结果已经确定为真或者假,那么求值过程就直接终止,如 "&&" 和 "||" 、 "??" 、"?." const a = 1 , b = 2;

  • a || b;

首先对 a 求值,如果 a 为真值则直接返回 a

  • a && b ;

首先对 a 求值,如果 a 为虚值则直接返回 a

  • a ?? (b || c)

首先对 a 求值,如果 a 不是 nullundefined 则直接返回 a

  • a?.b.c

首先对 a 求值,如果 anullundefined 则直接返回 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?.()