我附上了两个if条件的例子。第一个if条件按预期工作。第二个if条件返回11,但为什么?我知道第二个if条件是错误的,但我想理解为什么Javascript会在那种情况下返回11。
function exception(number) {
// if(number === 10 || number === 11) { // Working as expected
if(number === 10 || 11) { // Why 11?
console.log(number);
}
}
function loop(f) {
for (i = 0; i <= 100; i++) {
f(i);
}
}
loop(exception);
答案 0 :(得分:5)
有关您尝试实现目标的一些信息:
number === 10 || number === 11
与(number === 10) || (number === 11)
number === 10 || 11
与(number === 10) || (11)
相同11
与number
现在让我们仔细看看number === 10 || 11
:
number === 10
将为true
11
(接受为真,对于不等于0的数字)答案 1 :(得分:5)
(expr1 || expr2)
“如果可以转换为true,则返回expr1;否则返回 表达式2“。
因此当expr1
是(或评估)其中一个0,"",false,null,undefined,NaN
时,会返回expr2
,否则会返回expr1
答案 2 :(得分:0)
因为Boolean(11)
是true
(试试你的控制台)
所以即使第一个条件不成立(如果数字不是10),那么第二个条件也将为真