2016-11-13 3 views
0

以下のelse文はif文がfalseであっても実行されません。私はいくつかの非常に基本的な間違いをしたと思うが、何が分からないのだろう。奇妙なif-elseの動作Javascript

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

「女王」をtruthy値です。これを行う 'a [i] ===「king」|| a [i] === "queen" ' –

+0

ありがとうございましたが、王と女王の両方が偽であるべきではありません。[2] –

+0

はい' a [2] === "king" || a [2] === "queen"は 'false'です。 –

答えて

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の左側のいずれかがtrueの場合:a[i] === "king"の場合はtrueです。またはORの右側はtrue"queen"です。文字列自体が評価されており、文字列"queen"nullではないため、trueと評価されます。

+1

ので、あなたはjavascriptの状態を確認する方法を意味する:a [i] = "king"または "queen"の場合[2] if a [2] = "キング "は偽ですが、孤独("女王 ")がまだ正しいのならば? –

+1

@BijayTimilsina正確に! –

+1

@TiagoMarinho - 素敵な編集です。追加の説明をいただきありがとうございます。 – Joe

0

あなたは以下のように||と別にあなたの二つの条件を作るお奨め:a[i] === "king" || a[i] === "queen"