Javascript: false && false 是假的?

Javascript: false && false is false?

所以,我进行了一些搜索,好像还没有人问过,但我可能是错的。

逻辑上

false && false === true
false && true === false
true && false === false
true && true === true

然而

javascript 似乎并非如此。我 运行 在 console 上面,这是我从 FireFox && Chrome:

得到的
false && false //console output: false
false && true //console output: false
true && false //console output: false
true && true //console output: true

我已经找到了 solution 但是真的吗?为什么?我认为这是标准行为。

它甚至在 Java documentation 中说 logical AND | &&

false 和 false 在逻辑上是错误的。

每次您使用 AND 设置假表达式时,等式的其余部分都无关紧要,因为每个表达式都必须为真才能使结果为真。

false && true 表示:

两个等式都有效吗? "false" AND "true" 是真的吗? 如果其中任何一个失败,则其为 false

另一个例子:

真|| (真 && 假)

在这种情况下,您可以这样阅读:

"true" 是真的还是... "true" AND "false" 是真的?

第一个被评估为真,所以不需要验证第二个等式(因为其中一个已经为真),事实上它不是。用于优化。

&& 运算符具有从左到右的结合性。

意味着如果第一个值是真实的(强制为真),它将评估第二个,如果第二个是真实的,第三个..直到最后一个将是表达式的结果。

由于运算符的第一个元素是假的(可强制为假)表达式 returns 立即为假。

Operator precedence MDN

使用 && 运算符的表达式的结果根据以下规则确定:

如果表达式的左边是"falsey",表达式将return左边。

如果表达式的左边是"truthy",表达式将return右边。

就是这样。所以在false && false中,左边是"falsey",所以表达式return是左边,false

我实际上写了一篇关于 || and && 运算符的博客 post。它可以详细解释发生了什么。