为什么 1 && 2 return 2?

Why does 1 && 2 return 2?

为什么表达式 1 && 2 的计算结果为 2?

console.log("1 && 2 = " + (1 && 2));

根据MDN

expr1 && expr2 returns expr1 if it can be converted to false; otherwise, returns expr2. Thus, when used with Boolean values, && returns true if both operands are true; otherwise, returns false.

因为1可以求值为true, 1 && 2 returns 2.

&& (and operator) returns 最后一个(右侧)值只要链是 "truthy".

如果您尝试 0 && 2 -> 结果将是 0(即 "falsy")

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Logical_operators

根据此页面:

Why 1 && 2 == 2

AND returns the first falsy value or the last value if none were found. OR returns the first truthy one.

对于同一语句中的多个运算符:

precedence of the AND && operator is higher than OR ||, so it executes before OR.

alert( 5 || 1 && 0 ); // 5

因为它的and,所有的值只需要求值到第一个0,最后求值的值是returned,也就是最后一个。

虽然此处不直接相关,但请注意 bitwiselogical 运算符之间存在差异。前者测试相同且仅 return 的位,后者仅测试 true (!=0) 或 false (=0),因此与直觉相反,bitwise ANDAND 不可互换,除非值都是 01.