我有以下条件检查变量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");
}
答案 0 :(得分:3)
将if条件更改为以下
if ((Qmart === "E2" || Qmart === "A2" || Qmart === "B2" || Qmart === "D2") && (linearstatus == "linear")) {
} else {
alert("it is an else condition");
}

希望有所帮助
答案 1 :(得分:2)
如果您想检查多个值,则无法使用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
语句。
答案 2 :(得分: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");
}