如果在JavaScript中检查值赋值的条件

时间:2016-12-11 06:12:15

标签: javascript if-statement

我有以下条件检查变量Qmartlinearstatus 虽然它们具有所需的值,但我的if语句始终处于else条件。我是否在检查这些值时出现了一些错误?

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

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

3 个答案:

答案 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")

QmartA2时,条件评估为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");
}