【问题标题】:javascript || operator gives different results based on order [duplicate]javascript ||运算符根据顺序给出不同的结果[重复]
【发布时间】:2015-09-22 18:10:15
【问题描述】:

我知道 a||b 返回一个对象,而不是布尔值。我只是不明白为什么 javascript 会给出不同的结果

undefined || "" (result is "")
"" || undefined (result is undefined)

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

更新:@Quentin 明确回答, "" 被评估为假,如果 a 和 b 都被评估为假, a||b 将返回 b。

【问题讨论】:

  • 你在检查什么?你能提供一个包含更多上下文的代码 sn-p 吗?
  • 仅供参考:JavaScript 的 || 运算符不会返回布尔值。这可能就是你感到困惑的原因。
  • 你说得对,我被它弄糊涂了 :) 很好!

标签: javascript


【解决方案1】:

|| 运算符测试表达式左侧的真实性。如果 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。

【讨论】:

    【解决方案2】:

    JavaScript 的逻辑 OR 运算符,||returns one of its operands。在a || b 中,如果a 为真,则返回a,否则返回b

    您的两个参数都评估为false。所以在undefined || "" 中,它返回""。对于"" || undefined,它返回undefined。在这两种情况下,都是因为这就是 b 位置中的内容。

    【讨论】:

      【解决方案3】:

      ||运算符返回计算结果为 true 的第一个参数。如果所有参数都是假的,那么它只返回最后一个参数,不管它是什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        • 1970-01-01
        • 2014-02-14
        • 1970-01-01
        相关资源
        最近更新 更多