今天,当我发现一些奇怪的东西时,我在我的应用程序中使用JavaScript代码.
var someVar = 25;
var anotherVar = 50;
var out = (anotherVar == 50 && someVar);
console.log(out) // outputs 25 and not true or false;
Run Code Online (Sandbox Code Playgroud)
知道发生了什么事吗?
Jam*_*lly 26
如MDN的Logical Operators页面所述,&&运营商:
如果可以转换为false,则返回expr1; 否则,返回expr2.因此,当与布尔值一起使用时,
&&如果两个操作数都为真,则返回true; 否则,返回false.
在您的情况下,expr1(anotherVar == 50)为true(非false),因此返回expr2(someVar),即25.
它不返回true或false因为expr2不是布尔值.
在ECMA-262规范说明:
&&或||运算符生成的值不一定是布尔类型.生成的值将始终是两个操作数表达式之一的值.
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |