今天,当我发现一些奇怪的东西时,我在我的应用程序中使用JavaScript代码。
var someVar = 25;
var anotherVar = 50;
var out = (anotherVar == 50 && someVar);
console.log(out) // outputs 25 and not true or false;
知道发生了什么?
答案 0 :(得分:26)
正如MDN's Logical Operators page所述,&&
运营商:
如果可以转换为false,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,如果两个操作数都为真,则
&&
返回true;否则,返回false。
在您的情况下, expr1 (anotherVar == 50
)为真(非假),因此它返回 expr2 (someVar
),这是25
。
它不会返回true
或false
,因为 expr2 不是布尔值。
&&
或||
运算符生成的值不一定是Boolean类型。生成的值将始终是两个操作数表达式之一的值。