所以我在玩对象,我注意到对象a = {}
a.b == undefined
是true
a.b === undefined
也是true
然而
a.b === (undefined || 'c')
是false
有谁知道这种行为的原因是什么?
所以我在玩对象,我注意到对象a = {}
a.b == undefined
是true
a.b === undefined
也是true
然而
a.b === (undefined || 'c')
是false
有谁知道这种行为的原因是什么?
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'
由||
运算符返回。
a.b === (undefined || 'c')
a.b
就像undefined
你提到的那样。
如果为真,||
or 运算符将返回其左侧;否则它将返回其右侧。
在这种情况下,(undefined || 'c')
计算结果为'c'
,给您留下a.b === 'c'
,这是错误的。