逻辑运算符||返回数字而不是布尔值

时间:2016-01-10 14:11:49

标签: javascript

我附上了两个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);

3 个答案:

答案 0 :(得分:5)

有关您尝试实现目标的一些信息:

  • number === 10 || number === 11(number === 10) || (number === 11)
  • 相同
  • number === 10 || 11(number === 10) || (11)相同11number
  • 相同

现在让我们仔细看看number === 10 || 11

    如果数字类型为number且等于10 ,则
  • number === 10将为true
  • 如果第一个是假的,它将评估下一个语句的布尔值:11(接受为真,对于不等于0的数字)

答案 1 :(得分:5)

来自this question

(expr1 || expr2)
  

“如果可以转换为true,则返回expr1;否则返回   表达式2“。

source

因此当expr1是(或评估)其中一个0,"",false,null,undefined,NaN时,会返回expr2,否则会返回expr1

答案 2 :(得分:0)

因为Boolean(11)true(试试你的控制台)

所以即使第一个条件不成立(如果数字不是10),那么第二个条件也将为真