奇怪的if-else行为Javascript

Weird if-else behaviour Javascript

本文关键字:行为 Javascript if-else      更新时间:2023-09-26

即使if语句为假,下面的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

应该是:

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的解释方式。

ORtrue, a[i] === "king"true;或者OR的右边是true: "queen"。它自己计算字符串,字符串"queen"不是null,所以它的计算结果是true

您必须分别使用||设置以下两个条件:a[i] === "king" || a[i] === "queen"