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

问题描述 投票:0回答:3

我有一个条件如下检查变量Qmartlinearstatus。 虽然他们有所需的值,但我的if声明始终是else条件。我正在制作检查这些值的错误吗?

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

if (Qmart === ("E2" || "A2" || "B2" || "D2") && linearstatus == "linear") {
} else {
    alert("it is an else condition");
}
javascript if-statement
3个回答
3
投票

将if条件更改为以下内容

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

} else {
  alert("it is an else condition");
}

希望能帮助到你


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
投票

你可以这样做。

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");
}
© www.soinside.com 2019 - 2024. All rights reserved.