JavaScript中值赋值检查的If条件

JavaScript中值赋值检查的If条件,javascript,if-statement,Javascript,If Statement,我有如下条件来检查变量Qmart和linearstatus。 尽管它们具有所需的值,但我的if语句始终处于else条件。我在检查这些值时是否犯了错误 var Qmart = "A2"; var linearstatus = "linear" if (Qmart === ("E2" || "A2" || "B2" || "D2") && linearstatus == "linear") { } else { alert("it is an else condition

我有如下条件来检查变量Qmart和linearstatus。 尽管它们具有所需的值,但我的if语句始终处于else条件。我在检查这些值时是否犯了错误

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

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

如果要检查多个值,则不能使用Qmart==E2 | | A2 | | B2 | | D2,需要分别检查每个条件:

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

} else {
    alert("it is an else condition");
}
您可能会问,为什么代码没有抛出任何运行时错误。问题在于这一代码

"E2" || "A2" || "B2" || "D2"
是有效的JavaScript代码,它返回第一个truthy值。此功能在JavaScript中经常被调用和使用。在您的例子中,上面的语句返回第一个truthy值,它总是E2。这意味着,您的代码与

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

当Qmart为A2时,条件的计算结果为false,执行else语句。

将if条件更改为以下内容

如果Qmart==E2 | | Qmart==A2 | | Qmart==B2 | | Qmart==D2&&linearstatus==linear{ }否则{ 这是另一种情况;
} 你可以这样做

var QMart=E2, 线性状态=线性; var条件=[E2、A2、B2、D2]; if conditions.indexOfQMart!==-1&&linearstatus==线性{ console.logIn-truthy条件; }否则{ console.logit是一个else条件;
}你必须一个接一个地比较它们,或者把它们放在一个数组中,然后使用find或indexOf。如果Qmart==E2 | | Qmart==A2。。。{…}E2 | | A2 | | B2 | | D2=>E2