我有一个条件如下检查变量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");
}
将if条件更改为以下内容
if ((Qmart === "E2" || Qmart === "A2" || Qmart === "B2" || Qmart === "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值。此功能称为short-circuit evaluation,经常在JavaScript中使用。在你的情况下,上面的语句返回第一个truthy值,它总是“E2”。这意味着,您的代码与之相同
if (Qmart === "E2" && linearstatus == "linear")
当Qmart
是A2
时,则条件评估为false
并执行else
语句。
你可以这样做。
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");
}