为什么 2 && 3 结果是 3 (javascript)?
Why does 2 && 3 results in 3 (javascript)?
当我在浏览器的控制台中输入时:
console.log(2 && 3)
结果总是第二个数字(在本例中为 3):
3
谁能解释一下为什么?
如果 &&
的左侧计算为假值,则整个表达式的计算结果为左侧。
否则计算为右侧。
2
是真值,所以 2 && 3
是 3
.
为了比较,尝试 console.log(0 && 1)
和 console.log(false && "something")
。
如果所有其他值都为真,&& logical operator 将 return 最后一个值,否则它将 return 第一个非真值。
所以在你的情况下,因为 2 是真实的,那么它将评估 3
,因为它是真实的,它将被 returned.
同样的方式 2 && 0 && 4
将 return 0
因为它是一个非真值。
Logical operators are typically used with Boolean (logical) values.
When they are, they return a Boolean value. However, the && and ||
operators actually return the value of one of the specified operands,
so if these operators are used with non-Boolean values, they may
return a non-Boolean value.
&&
必须计算所有表达式。 2 && 3
将首先评估 2
的“真实性”,这是一个真值,但随后它还必须评估 3
。最后评估的值然后 returned。如果至少有一个值是非真实的,那么第一个这样的值将被 returned 代替。
||
另一方面 return 是 第一个真值 表达式或最后一个非真值表达式(如果没有真值表达式)。
之所以 &&
return 是最后一个可能的值是因为它只需要检查 所有 表达式以便 return结果。 ||
不必那样做。如果 ||
的第一个表达式为真,它将忽略所有其他表达式。同样,如果 &&
的第一个表达式为假,它会忽略所有其他表达式(请参阅逻辑运算符中的短路)。
当我在浏览器的控制台中输入时:
console.log(2 && 3)
结果总是第二个数字(在本例中为 3):
3
谁能解释一下为什么?
如果 &&
的左侧计算为假值,则整个表达式的计算结果为左侧。
否则计算为右侧。
2
是真值,所以 2 && 3
是 3
.
为了比较,尝试 console.log(0 && 1)
和 console.log(false && "something")
。
如果所有其他值都为真,&& logical operator 将 return 最后一个值,否则它将 return 第一个非真值。
所以在你的情况下,因为 2 是真实的,那么它将评估 3
,因为它是真实的,它将被 returned.
同样的方式 2 && 0 && 4
将 return 0
因为它是一个非真值。
Logical operators are typically used with Boolean (logical) values. When they are, they return a Boolean value. However, the && and || operators actually return the value of one of the specified operands, so if these operators are used with non-Boolean values, they may return a non-Boolean value.
&&
必须计算所有表达式。 2 && 3
将首先评估 2
的“真实性”,这是一个真值,但随后它还必须评估 3
。最后评估的值然后 returned。如果至少有一个值是非真实的,那么第一个这样的值将被 returned 代替。
||
另一方面 return 是 第一个真值 表达式或最后一个非真值表达式(如果没有真值表达式)。
之所以 &&
return 是最后一个可能的值是因为它只需要检查 所有 表达式以便 return结果。 ||
不必那样做。如果 ||
的第一个表达式为真,它将忽略所有其他表达式。同样,如果 &&
的第一个表达式为假,它会忽略所有其他表达式(请参阅逻辑运算符中的短路)。