在编程时,我的if语句产生了意外的结果。
这段代码怎么可能弹出true呢? 我在W3S上没有找到任何有用的信息,真的很想知道为什么会弹出"true"。
window.alert(false == false == true); //alerts true
window.alert(false == (false == true));//even this alerts true
在编程时,我的if语句产生了意外的结果。
这段代码怎么可能弹出true呢? 我在W3S上没有找到任何有用的信息,真的很想知道为什么会弹出"true"。
window.alert(false == false == true); //alerts true
window.alert(false == (false == true));//even this alerts true
第一种情况
false == false == true
将被评估为
(false == false) == true
默认情况下,由于表达式从左到右进行评估,因此这可以简化为结合律。
true == true
因为false
实际上等于false
,所以它被评估为true
。
第二种情况
false == (false == true)
被简化为
false == false
false
不等于 true
。这就是为什么整个表达式是 true
,因为 false
等于 false
。window.alert(false == false == true);
首先,false == false
是真的。然后,true == true
也是真的。
在第二种情况下,由于使用了括号 ()
,因此括号内的内容会先被执行。
false == true
是假的。
接着,false == false
是真的。
false == true
?我认为显然这不是真的,因此(false == true)
是false
,所以false == (false == true)
(因为我们已经注意到第二部分是假)。(false == false) == true
相同。同样地,我将其留给你来证明这是正确的。
false == false == true
false == false
,这是true
,它等于true
。
false == (false == true)
false == true
,这是false
,它等于false
。
第一行 - 从左到右比较 false == false
,结果为 true
,然后与 true
比较,返回 true
第二行 - 从左到右比较 (false == true)
,结果为 false
,然后比较 false
和 false
,返回 true
两种都是正确的。
情况1:false == false == true
这类似于(false == false) == true
评估结果为
false == false IS true
和true == true IS true
情况2:false == (false == true)
这类似于(false == true) == false
评估结果为
false == true IS false
和false == false IS true
希望这可以帮助到您。
(false == true)
等于 false,而false == false
等于 true。 - Oleksandr T.2 < 3 < 4
,而需要写成2 < 3 && 3 < 4
,这样有帮助吗? - decezewindow.alert
来调试。在Chrome中,按下ctrl+shift+j将打开开发控制台,您可以在其中评估JavaScript。在Firefox中,按下ctrl+shift+i。或者只需使用Node的REPL,甚至不需要浏览器。 - Chris Martin