为什么Javascript给出的结果是数字而不是真/假的表达式

Why is Javascript giving result as Number instead of True/False for expression?

本文关键字:表达式 数字 Javascript 结果是 为什么      更新时间:2023-09-26

今天,当我在应用程序中闲逛时,我观察到了一些奇怪的东西。

var someVar = 25; 
var anotherVar = 50; 
var out = (anotherVar == 50 && someVar); 

console.log(out) // outputs 25 and not true or false;

知道发生了什么吗?

如 MDN 的逻辑运算符页面所述,&&运算符:

如果可以转换为 false,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,如果两个操作数都为 true,则&&返回 true;否则,返回 false。

在您的情况下,expr1 ( anotherVar == 50 ( 为真(不假(,因此它返回 expr2 ( someVar (,即 25

它不返回truefalse,因为 expr2 不是布尔值。

ECMA-262 规范指出:

&&||运算符生成的值不一定是布尔类型。生成的值将始终是两个操作数表达式之一的值。