为什么OR运算符在Javascript中表现得像这样?

时间:2019-11-27 12:45:16

标签: javascript

我一直将||用作无效的合并运算符。 AB

但是如果我做类似的事情,

1  const a = null
2  const b = '123'
3
4  console.log(a || b) // 123
5  console.log(a) || console.log(b) // null, 123

为什么在第5行都同时执行两个控制台日志?即使a === null,也应该只执行第一个控制台日志,而不查看console.log(b)吗?

1 个答案:

答案 0 :(得分:4)

  1. 评估左侧。
  2. console.log(a)返回undefined(因为函数总是返回undefined
  3. 由于LHS被评估为虚假值,因此右侧被评估。

a的值无关紧要,因为LHS上的值不是。