所以,我做了一些搜索,看起来还没有被问过,但我可能错了。
逻辑上
false && false === true
false && true === false
true && false === false
true && true === true
无论其
javascript
似乎不是这种情况。我在console
中运行了上述内容,这是我从FireFox&&铬:
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 | &&
。
答案 0 :(得分:2)
false和false在逻辑上是错误的。
答案 1 :(得分:1)
每次使用AND设置假表达式时,等式的其余部分无关紧要,因为每个表达式必须为TRUE才能使结果为真。
false&& true表示:
两个方程都有效吗?是“假”而“真”是真的吗? 如果其中任何一个失败,那么它是假的
另一个例子:
true || (true&& false)
在这种情况下,你这样读:
是“true”true还是......“true”和“false”是真的吗?
第一个被评估为真,所以没有必要验证第二个等式(因为其中一个已经是真的),实际上它没有。优化。
答案 2 :(得分:1)
使用const TodoList = ({todos}) => {
let todoNodes = todos.map(todo => {
return <li>{todo.text}</li>
});
return <div> {todoNodes} </div>;
}
运算符的表达式的结果基于以下规则确定:
如果表达式的左侧是“falsey”,则表达式将返回左侧。
如果表达式的左侧是“truthy”,则表达式将返回右侧。
就是这样。所以在&&
中,左侧是“falsey”,因此表达式返回左侧false && false
。
我实际上写了一篇关于|| and &&运营商的博文。它可以解释正在发生的事情。
答案 3 :(得分:0)
&&
运算符具有从左到右的关联性。
表示如果第一个值是真值(可强制为真),它将评估第二个值,如果第二个值是真实的第三个值,则最后一个值将是表达式的结果。
由于运算符的第一个元素是伪造的(强制为假),表达式立即返回false。