JavaScript中值赋值检查的If条件
我有如下条件来检查变量Qmart和linearstatus。 尽管它们具有所需的值,但我的if语句始终处于else条件。我在检查这些值时是否犯了错误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
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