如何拥有多个'and'逻辑运算符和一个'or'逻辑运算符



这有点难以解释,但我想做一些看起来像这样的事情:

if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();

但是它在没有匹配第一个运算符的情况下结束运行。我想知道除了两个不同的输入之外,如何拥有最后一个运算符,同时在运行之前确保满足其他条件。

您只需要使用括号,例如:

if(a == 4 && b == true && (c == "words" || c == "numbersandwords")) { DoSomething(); }

只需使用几个括号将or部分和and部分分开,并在最后一个字符串之前添加c ===。如果末尾没有相等部分,"numbersandwords"字符串总是等于true。

if(a === 4 && b === true && (c === "words" || c === "numbersandwords")){
  DoSomething();
}

在JavaScript中,与其他语言一样,每个运算符(如&&||(都有一个先验,它决定了它的求值顺序。&&||具有更高的优先级,因此首先对其进行评估。因此,左边的每一项都是and。然而,即使它们都是false,总体结果也是true,因为它是or ed和"numbersandwords",后者的计算结果为true(除了0、-0、null、false、NaN、undefined或空字符串之外的所有内容都是true(。你需要做的第一件事就是将某个东西(可能是c(与它进行比较。然后你可以使用括号更改评估顺序,括号的优先级比其他任何东西都高:

if(a === 4 && b === true && (c === "words" || c === "numbersandwords")) DoSomething();

或者,如果你最终想根据c的值做一些稍微不同的事情(或者它只是更好地表达你的意图(,你可以将测试分解为几个if语句:

if(a === 4 && b === true)
{
    if(c === "words" || c === "numbersandwords")
    {
        DoSomething();
    }
}

相关内容

最新更新