当在JavaScript中使用逻辑或运算符“||”并将其应用到两个操作数都是false和undefined时,它的行为解释是什么?
1)
1)
> false || undefined
undefined
2)
> undefined || false
false
> false || undefined
undefined
2)
> undefined || false
false
逻辑运算符 OR
(或) 不像 +
,*
等那样满足交换律。它返回第一个可以转换为 true
的表达式。(来源:Mozilla 文档)
在 false || undefined
中,按定义 false
不能被转换为 true
(因为它的相反),所以它返回第二个操作数(undefined
)。
在 undefined || false
中,undefined
是一个值,但在 JavaScript 中被视为 false
,所以逻辑运算符评估第二个操作数并返回 false
(因为两个操作数都是假的)。
undefined || false
返回 undefined
?(原本应该返回 false
) - Michael Radionovfalse
和undefined
有关,而是与JavaScript中的任何Falsy Values相关。请注意,JavaScript中共有六个falsy值:
<left value> || <right value>
,它总是返回OR运算符右侧的值。原因是OR运算符根据其在ECMAScript Engines中的实现,通常在可以强制转换为true
的情况下返回左侧的值。但是,如果运算符左侧的值无法强制转换为true,则始终返回右侧的值,而不管右侧的值如何,而不是像人们可能期望的那样进行强制转换。false || undefined
的情况:无法将false
(expr1)转换为true
,因此返回undefined
(expr2)。undefined || false
的情况:无法将undefined
(expr1)转换为true
,因此返回false
(expr2)。