如何让 (false == false == true) 为真?

3

在编程时,我的if语句产生了意外的结果。

这段代码怎么可能弹出true呢? 我在W3S上没有找到任何有用的信息,真的很想知道为什么会弹出"true"。

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

因为 (false == true) 等于 false,而 false == false 等于 true。 - Oleksandr T.
运算符优先级。 - epascarello
如果我指出你也不能写2 < 3 < 4,而需要写成2 < 3 && 3 < 4,这样有帮助吗? - deceze
为了避免未来的痛苦,你应该知道你不必继续使用window.alert来调试。在Chrome中,按下ctrl+shift+j将打开开发控制台,您可以在其中评估JavaScript。在Firefox中,按下ctrl+shift+i。或者只需使用Node的REPL,甚至不需要浏览器。 - Chris Martin
MDN被广泛认为比W3S更优秀。 - OrangeDog
@epascarello,正如我在帖子中提到的,这里实际上优先级并不重要。无论优先级如何,表达式都是正确的。 - Ivaylo Strandjev
6个回答

9

第一种情况

false == false == true

将被评估为

(false == false) == true

默认情况下,由于表达式从左到右进行评估,因此这可以简化为结合律

true == true

因为false实际上等于false,所以它被评估为true

第二种情况

false == (false == true)

被简化为

false == false

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

3
执行将从左侧开始。
window.alert(false == false == true); 

首先,false == false 是真的。然后,true == true 也是真的。

在第二种情况下,由于使用了括号 (),因此括号内的内容会先被执行。

false == true 是假的。

接着,false == false 是真的。


2
这是真的吗,false == true?我认为显然这不是真的,因此(false == true)false,所以false == (false == true)(因为我们已经注意到第二部分是假)。
至于第一个例子——实际上无论评估顺序如何,它都是正确的(我把它留给你作为逻辑练习)。然而,JavaScript保证评估顺序从左到右,因此这个表达式与(false == false) == true相同。同样地,我将其留给你来证明这是正确的。

1
false == false == true

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

false == (false == true)

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


0

第一行 - 从左到右比较 false == false,结果为 true,然后与 true 比较,返回 true

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


0

两种都是正确的。

情况1: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

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接