【问题标题】:How can (false == false == true) be true(false == false == true) 怎么可能是真的
【发布时间】:2015-04-06 12:16:43
【问题描述】:

在我编程时,我的 if 语句中出现了意想不到的结果。

这个代码怎么会是真的呢? 我在 W3S 没有找到任何可以帮助我的东西,我真的很想知道为什么这些警报“真实”

window.alert(false == false == true); //alerts true
window.alert(false == (false == true));//even this alerts true

【问题讨论】:

  • 因为 (false == true) == false 和 false == false 等于 true
  • 如果我指出你也不能写2 < 3 < 4,但你需要写2 < 3 && 3 < 4,这有帮助吗?
  • 为了避免你在未来的痛苦,你应该知道你不必一直使用window.alert 来调试东西。在 Chrome 中,ctrl+shift+j 将打开开发控制台,您可以在其中评估 javascript。在 Firefox 中,ctrl+shift+i。或者只使用Node's REPL,甚至不用浏览器。
  • MDN 也比 W3S 更受欢迎。

标签: javascript boolean


【解决方案1】:

第一个案例

false == false == true

将被评估为

(false == false) == true

因为expressions are evaluated from left to right,默认情况下。这减少到

true == true

因为false 实际上等于false。这就是为什么它被评估为true

第二种情况

false == (false == true)

简化为

false == false

因为false 不等于true。这就是为什么整个表达式是true,因为false 等于false

【讨论】:

    【解决方案2】:

    执行将从左侧开始。

    window.alert(false == false == true); 
    

    起初false== false 是真的。那么true==true 为真。

    在第二种情况下,因为您使用括号(),它将首先执行。

    false == true 为假。

    那么false == false 为真。

    【讨论】:

      【解决方案3】:

      false == true 是真的吗?我认为这显然不是真的,因此(false == true)falsefalse == (false == true)(因为我们已经注意到第二部分是错误的)。

      至于第一个示例 - 实际上,无论评估顺序如何,它都会成立(我将其留给您作为逻辑练习)。仍然 javascript 保证评估顺序是从左到右的,因此这个表达式与(false == false) == true 相同。我再一次让你证明这是真的。

      【讨论】:

        【解决方案4】:
        false == false == true
        

        false == false,这是true,等于true

        false == (false == true)
        

        false == true,这是false,等于false

        【讨论】:

          【解决方案5】:

          第一行 - 从左到右比较 false == falsetrue,然后比较 true 返回 true

          第二行 - 从左到右比较(false == true)false,然后比较falsefalse 返回true

          【讨论】:

            【解决方案6】:

            两者都是正确的。

            案例一:false == false == true
            这类似于(false == false) == true

            评价是 false == false IS truetrue == true IS true

            案例2:false == (false == true)
            这类似于(false == true) == false

            评价是 false == true IS falsefalse == false IS true

            希望对你有帮助

            【讨论】:

              猜你喜欢
              • 2021-05-16
              • 1970-01-01
              • 1970-01-01
              • 2014-02-16
              • 2021-08-08
              • 1970-01-01
              • 1970-01-01
              • 2015-10-03
              • 2011-02-17
              相关资源
              最近更新 更多