【发布时间】:2019-11-27 12:45:16
【问题描述】:
我一直使用|| 作为无效的合并类型的运算符。 A 或 B。
但如果我做类似的事情,
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)吗?
【问题讨论】:
-
为什么不应该执行第二个
console.log?! -
因为它是左侧或右侧.. 不是两者都
-
@MikeK — 整个表达式评估为 LHS 或 RHS 的值。仍然需要对代码进行评估以找出它应该是哪一个。
-
它必须评估双方*才能返回结果……(*如果 LHS 表达式是假的……)
-
是的。函数调用的计算结果是函数返回的任何值。
console.log不返回任何东西,因为,它为什么要返回,有什么可以返回的?
标签: javascript