【问题标题】:Weird if-else behaviour Javascript [duplicate]奇怪的if-else行为Javascript [重复]
【发布时间】:2016-11-13 14:13:59
【问题描述】:

即使 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

【问题讨论】:

  • "queen" 是一个真实值。这样做a[i] === "king" || a[i] === "queen"
  • 感谢它的工作,但国王和王后不应该为 a[2] 做假
  • 是的a[2] === "king" || a[2] === "queen"false
  • 你不需要parseInt(a[i]),因为你在字符串中添加了一个字符串。
  • 请注意,当您说a[i] === "king" || "queen" 时,您是在问a[i] 是否等于“king”,而在您问另一个问题之后,字面意思是"queen",但您想问@987654328 @。所以你的条件应该像@OriDrori 说的那样

标签: javascript loops


【解决方案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

【讨论】:

  • 所以您的意思是 javascript 检查条件的方式是:a[i]="king" 或 "queen" 在这种情况下,对于 a[2],如果 a[2]="king"是假的,但如果孤独(“女王”)仍然正确,对吧?
  • @BijayTimilsina 完全正确!
  • @TiagoMarinho - 很好的编辑,感谢您的额外澄清。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2018-09-25
    相关资源
    最近更新 更多