奇怪的if-else行为Javascript

时间:2016-11-13 14:14:00

标签: javascript loops

即使if语句为false,下面的else语句也不会执行。我想我已经犯了一些非常基本的错误,但无法弄清楚是什么。

var a = ["king","queen","100"];
    for (var i=0; i<a.length; i++) {
        if (a[i] === "king" || "queen"){
            console.log("monarch");
        }
        else {
            console.log("The number is: "+ parseInt(a[i]));
        }
    }
// This prints out "monarch" 3 times

2 个答案:

答案 0 :(得分:1)

应该是:

var a = ["king","queen","100"];
for (var i=0; i<a.length; i++) {
    if (a[i] === "king" || a[i] ===  "queen"){
        console.log("monarch");
    }
    else {
        console.log("The number is: "+ parseInt(a[i]));
    }
}

你用我们说口语的方式写了你的布尔表达式,“A是1或2”。这不是解释OR的方式。

OR的左侧是truea[i] === "king"true;或OR的右侧是true"queen"。它正在自己评估字符串,字符串"queen"不是null,所以评估为true

答案 1 :(得分:0)

您必须使用||分别制定两个条件,如下所示:a[i] === "king" || a[i] === "queen"