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 立即为假。
使用 &&
运算符的表达式的结果根据以下规则确定:
如果表达式的左边是"falsey",表达式将return左边。
如果表达式的左边是"truthy",表达式将return右边。
就是这样。所以在false && false
中,左边是"falsey",所以表达式return是左边,false
。
我实际上写了一篇关于 || and && 运算符的博客 post。它可以详细解释发生了什么。
所以,我进行了一些搜索,好像还没有人问过,但我可能是错的。
逻辑上
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 立即为假。
使用 &&
运算符的表达式的结果根据以下规则确定:
如果表达式的左边是"falsey",表达式将return左边。
如果表达式的左边是"truthy",表达式将return右边。
就是这样。所以在false && false
中,左边是"falsey",所以表达式return是左边,false
。
我实际上写了一篇关于 || and && 运算符的博客 post。它可以详细解释发生了什么。