未定义相对于对象的行为

behavior of undefined with respect to objects

本文关键字:对象 相对于 未定义      更新时间:2023-09-26

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

a.b == undefined true

a.b === undefined也是true

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

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

undefined || 'c'计算结果为'c',所以a.b === (undefined || 'c')等价于运行a.b === 'c',这显然是错误的。

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

特别:

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

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

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

a.b就像你提到的undefined

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

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