2016-12-11 13 views
0

Qmartlinearstatusの変数を確認するための条件は次のとおりです。
必要な値がありますが、私のifステートメントは常にelseの状態になります。これらの値をチェックするために間違いがありますか?バリューアサインチェックの条件がJavaScriptの場合

var Qmart = "A2"; 
var linearstatus = "linear" 

if (Qmart === ("E2" || "A2" || "B2" || "D2") && linearstatus == "linear") { 
} else { 
    alert("it is an else condition"); 
} 
+0

は彼らに一つのすべてのものを比較する、または配列に入れと 'find'または' indexOf'を使用する必要があります。 'if(Qmart ===" E2 "|| Qmart ===" A2 "...){...}' –

+0

"E2" || "A2" || "B2" || "D2" => "E2" – shakib

答えて

3

変更の条件の場合には、それはあなたがこのような何かを行うことができ

2

あなたがQmart === ("E2" || "A2" || "B2" || "D2")を使用することはできません複数の値をチェックしたい場合は、separatelly各条件をチェックする必要があります。

if ((Qmart === "E2" || Qmart === "A2" || Qmart === "B2" || Qmart === "D2") && linearstatus == "linear") { 

} else { 
    alert("it is an else condition"); 
} 

あなたのコードは、任意のランタイムエラーをスローしなかった理由を尋ねるかもしれません。問題はそのコードです

"E2" || "A2" || "B2" || "D2" 

は有効なJavaScriptコードであり、最初の真理値を返します。この機能はshort-circuit evaluationと呼ばれ、JavaScriptで頻繁に使用されます。あなたの場合、上記のステートメントは最初の真理値を返します。これは常に "E2"です。これはあなたのコードが

if (Qmart === "E2" && linearstatus == "linear") 

QmartA2あるとき、その条件がfalseに評価し、else文が実行されると同じである、ということを意味しています。次

if ((Qmart === "E2" || Qmart === "A2" || Qmart === "B2" || Qmart === "D2") && (linearstatus == "linear")) { 
 

 
} else { 
 
    alert("it is an else condition"); 
 
}

2

に役立ちます願っています。あなたがつもりです

var QMart = "E2", 
 
    linearstatus = "linear"; 
 

 
var conditions = ["E2", "A2", "B2", "D2"]; 
 
if (conditions.indexOf(QMart) !== -1 && (linearstatus == "linear")) { 
 
    console.log("In truthy condition"); 
 
} else { 
 
    console.log("it is an else condition"); 
 
}