javascript ||运算符根据顺序给出不同的结果

时间:2015-09-22 18:10:15

标签: javascript

我理解|| b返回一个对象,而不是布尔值。我只是无法弄清楚为什么javascript会为

提供不同的结果
undefined || "" (result is "")
"" || undefined (result is undefined)

我认为两者都应该返回“”。 有人可以向我解释一下吗?谢谢!

更新:@Quentin清楚地回答,“”被评估为false,如果a和b都被评估为false,则|| b将返回b。

3 个答案:

答案 0 :(得分:5)

||运算符测试表达式左侧的真实性。如果LHS是真值,则返回LHS,否则返回RHS。

您可以在实际示例中看到它与if结合的方式:

if (a || b)
  • 如果a为真,那么它与if (a) if (true)相同。
  • 如果a为假且b为真,则if (b)if (true)
  • 如果ab均为假,那么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,那么它只返回最后一个参数,无论它是什么。