为什么Javascript为表达式提供结果为Number而不是True / False?

时间:2014-12-18 13:26:38

标签: javascript

今天,当我发现一些奇怪的东西时,我在我的应用程序中使用JavaScript代码。

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


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

知道发生了什么?

1 个答案:

答案 0 :(得分:26)

正如MDN's Logical Operators page所述,&&运营商:

  

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

在您的情况下, expr1 anotherVar == 50)为真(非假),因此它返回 expr2 someVar),这是25

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

ECMA-262 Specification注释:

  

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