为什么 2 && 3 结果是 3 (javascript)?

Why does 2 && 3 results in 3 (javascript)?

当我在浏览器的控制台中输入时:

console.log(2 && 3)

结果总是第二个数字(在本例中为 3):

3

谁能解释一下为什么?

如果 && 的左侧计算为假值,则整个表达式的计算结果为左侧。

否则计算为右侧。

2 是真值,所以 2 && 33.

为了比较,尝试 console.log(0 && 1)console.log(false && "something")

如果所有其他值都为真,&& logical operator 将 return 最后一个值,否则它将 return 第一个非真值。

所以在你的情况下,因为 2 是真实的,那么它将评估 3,因为它是真实的,它将被 returned.

同样的方式 2 && 0 && 4 将 return 0 因为它是一个非真值。

Logical Operator

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结果。 || 不必那样做。如果 || 的第一个表达式为真,它将忽略所有其他表达式。同样,如果 && 的第一个表达式为假,它会忽略所有其他表达式(请参阅逻辑运算符中的短路)。