为什么Javascript将结果作为数字而不是表达式的真/假?
今天我在应用程序中漫无目的地编写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。
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
等)不是有效值)