2

所以我在玩对象,我注意到对象a = {}

a.b == undefinedtrue

a.b === undefined也是true

然而 a.b === (undefined || 'c')false

有谁知道这种行为的原因是什么?

4

2 回答 2

9

undefined || 'c'计算结果为'c',因此a.b === (undefined || 'c')等价于 running a.b === 'c',这显然是错误的。

以下是关于逻辑运算符的 MDN 文档以供参考:
https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

尤其是:

运算符:逻辑或 (||)
用法expr1 || expr2
说明:如果expr1可以转换为true则返回;否则,返回expr2。因此,当与布尔值一起使用时,|| 如果任一操作数为真,则返回真;如果两者都为假,则返回假。

在 的情况下undefined || 'c'undefined无法转换为 true,因此'c'||运算符返回。

于 2013-10-09T20:56:59.723 回答
2

a.b === (undefined || 'c')

a.b就像undefined你提到的那样。

如果为真,||or 运算符将返回其左侧;否则它将返回其右侧。

在这种情况下,(undefined || 'c')计算结果为'c',给您留下a.b === 'c',这是错误的。

于 2013-10-09T20:57:31.427 回答