为什么 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")
根据此页面:
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,也就是最后一个。
虽然此处不直接相关,但请注意 bitwise
和 logical
运算符之间存在差异。前者测试相同且仅 return 的位,后者仅测试 true
(!=0) 或 false
(=0),因此与直觉相反,bitwise AND
和 AND
不可互换,除非值都是 0
或 1
.
为什么表达式 1 && 2
的计算结果为 2?
console.log("1 && 2 = " + (1 && 2));
根据MDN:
expr1 && expr2
returnsexpr1
if it can be converted tofalse
; otherwise, returnsexpr2
. Thus, when used with Boolean values,&&
returnstrue
if both operands are true; otherwise, returnsfalse
.
因为1可以求值为true
, 1 && 2
returns 2
.
&& (and operator) returns 最后一个(右侧)值只要链是 "truthy".
如果您尝试 0 && 2 -> 结果将是 0(即 "falsy")
根据此页面:
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,也就是最后一个。
虽然此处不直接相关,但请注意 bitwise
和 logical
运算符之间存在差异。前者测试相同且仅 return 的位,后者仅测试 true
(!=0) 或 false
(=0),因此与直觉相反,bitwise AND
和 AND
不可互换,除非值都是 0
或 1
.