【发布时间】:2015-07-26 23:50:21
【问题描述】:
当我在浏览器的控制台中输入时:
console.log(2 && 3)
结果总是第二个数字(在本例中为 3):
3
谁能解释一下为什么?
【问题讨论】:
标签: javascript logic logical-operators
当我在浏览器的控制台中输入时:
console.log(2 && 3)
结果总是第二个数字(在本例中为 3):
3
谁能解释一下为什么?
【问题讨论】:
标签: javascript logic logical-operators
如果&& 的左侧计算为假值,则整个表达式计算为左侧。
否则它评估为右手边。
2 是一个真值,所以2 && 3 是3。
为了比较,请尝试console.log(0 && 1) 和console.log(false && "something")。
【讨论】:
如果所有其他值都是真值,&& logical operator 将返回最后一个值,否则它将返回第一个非真值。
所以在你的情况下,因为 2 是真实的,那么它将评估 3 并且因为它是真实的,所以它将被返回。
2 && 0 && 4 以同样的方式返回 0,因为它是一个非真实值。
逻辑运算符通常与布尔(逻辑)值一起使用。 当它们存在时,它们返回一个布尔值。但是,&& 和 || 运算符实际上返回指定操作数之一的值, 因此,如果这些运算符与非布尔值一起使用,它们可能 返回一个非布尔值。
【讨论】:
&& 必须计算所有表达式。 2 && 3 将首先评估2 的“真实性”,这是一个真实值,但随后它也必须评估3。然后返回最后一个评估值。如果至少有一个值不真实,则返回第一个这样的值。
|| 返回第一个真实表达式,如果没有真实表达式,则返回最后一个非真实表达式。
&& 返回最后一个可能值的原因是它只需要检查 所有 表达式以返回结果。 || 不必这样做。如果|| 的第一个表达式为真,它将忽略所有其他表达式。同样,如果&& 的第一个表达式为假,它将忽略所有其他表达式(请参阅逻辑运算符中的短路)。
【讨论】: