这有点难以解释,但我想做一些看起来像这样的事情:
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();
}
}