这有点难以解释,但我想做一些看起来像这样的事情:
if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();
但它在不匹配第一个运算符的情况下结束运行。我想知道如何让除 2 个不同输入之外的最后一个运算符,同时在运行前仍确保满足其他条件。
这有点难以解释,但我想做一些看起来像这样的事情:
if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();
但它在不匹配第一个运算符的情况下结束运行。我想知道如何让除 2 个不同输入之外的最后一个运算符,同时在运行前仍确保满足其他条件。
只需使用几个括号将您的or
部分和部分分开,然后在最后一个字符串之前and
添加。c ===
最后没有那个相等部分,'numbersandwords' 字符串总是等于 true。
if(a === 4 && b === true && (c === "words" || c === "numbersandwords")){
DoSomething();
}
您只需要使用括号,例如:
if(a == 4 && b == true && (c == "words" || c == "numbersandwords")) { DoSomething(); }
在 JavaScript 中,与其他语言一样,每个运算符(如&&
and ||
)都有一个优先级来确定它的评估顺序。&&
的优先级高于||
,因此首先对其进行评估。因此,左边的每个术语都被and
一起编辑。然而,即使它们都是假的,总体结果也是真的,因为它是or
ed with "numbersandwords"
,其计算结果为真(除了 0、-0、null、假、NaN、未定义或空字符串之外的所有内容)。您需要做的第一件事就是将某些东西(大概是c
)与其进行比较。然后,您可以使用括号更改评估顺序,其优先级高于其他任何内容:
if(a === 4 && b === true && (c === "words" || c === "numbersandwords")) DoSomething();
if
或者,如果您可能希望最终根据以下值做一些稍微不同的事情c
(或者它只是更好地表达您的意图),您可以将测试分成几个语句:
if(a === 4 && b === true)
{
if(c === "words" || c === "numbersandwords")
{
DoSomething();
}
}