为什么Javascript将结果作为数字而不是表达式的真/假?

为什么Javascript将结果作为数字而不是表达式的真/假?,javascript,Javascript,今天我在应用程序中漫无目的地编写JavaScript代码,突然发现了一些奇怪的事情 var someVar = 25; var anotherVar = 50; var out = (anotherVar == 50 && someVar); console.log(out) // outputs 25 and not true or false; 知道发生了什么吗?如上所述,&&操作员: 如果可以将expr1转换为false,则返回expr1;否则,返回expr2。

今天我在应用程序中漫无目的地编写JavaScript代码,突然发现了一些奇怪的事情

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


console.log(out) // outputs 25 and not true or false;
知道发生了什么吗?

如上所述,
&&
操作员:

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

在您的例子中,expr1(
anotherVar==50
)为true(而非false),因此它返回expr2(
someVar
),即
25

它不会返回
true
false
,因为expr2不是布尔值

附注:

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


(anotherVar==50&&someVar==25)
?他可以使用“!!”(anotherVar==50&&!!someVar)//True顺便说一句,这就是为什么有时会看到像
arg1=arg1 | |“default”这样的默认值(只要false-y值(如
null
等)不是有效值)