我理解|| b返回一个对象,而不是布尔值。我只是无法弄清楚为什么javascript会为
提供不同的结果undefined || "" (result is "")
"" || undefined (result is undefined)
我认为两者都应该返回“”。 有人可以向我解释一下吗?谢谢!
更新:@Quentin清楚地回答,“”被评估为false,如果a和b都被评估为false,则|| b将返回b。
答案 0 :(得分:5)
||
运算符测试表达式左侧的真实性。如果LHS是真值,则返回LHS,否则返回RHS。
您可以在实际示例中看到它与if
结合的方式:
if (a || b)
a
为真,那么它与if (a)
if (true)
相同。a
为假且b
为真,则if (b)
为if (true)
a
和b
均为假,那么if (b)
为if (false)
如果您的示例,""
和undefined
都不是真值,那么您的两个测试都将返回RHS。
答案 1 :(得分:3)
JavaScript的逻辑OR运算符,||
,returns one of its operands。在a || b
中,如果a
是真实的,则返回a
,否则返回b
。
您的两个参数都评估为false
。因此,在undefined || ""
中,它会返回""
。对于"" || undefined
,它会返回undefined
。在这两种情况下,都是因为那是b
位置的内容。
答案 2 :(得分:1)
|| operator返回第一个求值为true的参数。如果所有参数都是false,那么它只返回最后一个参数,无论它是什么。