如何拥有多个'和'逻辑运算符和'或'逻辑运算符

时间:2013-05-12 23:40:46

标签: javascript logical-operators

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

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

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

3 个答案:

答案 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();
    }
}