有点难以解释,但我想做一些看起来像这样的事情:
if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();
但它在没有匹配第一个运算符的情况下结束运行。我想知道除了2个不同的输入之外如何使用最后一个运算符,同时仍然确保在运行之前满足其他条件。
答案 0 :(得分:1)
只需使用几个括号将or
部分与and
部分分开,然后在最后一个字符串前添加c ===
。如果没有那个平等部分,那么'numbersandwords'字符串总是等于true。
if(a === 4 && b === true && (c === "words" || c === "numbersandwords")){
DoSomething();
}
答案 1 :(得分:1)
您只需要使用括号,例如:
if(a == 4 && b == true && (c == "words" || c == "numbersandwords")) { DoSomething(); }
答案 2 :(得分:0)
在JavaScript中,与其他语言一样,每个运算符(如&&
和||
)都有一个precendence,用于确定其评估顺序。 &&
的优先级高于||
,因此首先进行评估。因此,左侧的每个术语都是and
。然而,即使它们都是错误的,总体结果也是如此,因为它or
与"numbersandwords"
编辑,其评估为真(与everything except 0, -0, null, false, NaN, undefined, or the empty string一样)。你需要做的第一件事是实际比较一些东西(大概是c
)。然后,您可以使用括号更改评估顺序,括号的优先级高于其他任何值:
if(a === 4 && b === true && (c === "words" || c === "numbersandwords")) DoSomething();
或者,您可以将测试分解为多个if
语句,如果您可能希望最终根据c
的值执行稍微不同的操作(或者它只是更好地表达您的意图):< / p>
if(a === 4 && b === true)
{
if(c === "words" || c === "numbersandwords")
{
DoSomething();
}
}