2013-05-12 219 views
0

这是稍微很难解释,但我想要做的事,看起来像这样:如何有多个“和”逻辑运算符和“或”逻辑运算符

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

,但它最终没有它匹配运行第一个运营商。我想知道如何让最后一名操作员除了2个不同的输入,同时仍然确保在运行之前满足其他标准。

回答

1

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

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

只需使用几个括号来分隔您的or零件和and零件,并在最后一个字符串前添加c ===。如果没有最后的平等部分,'数字和字符串'总是等于真。

if(a === 4 && b === true && (c === "words" || c === "numbersandwords")){ 
    DoSomething(); 
} 
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(或者它只是更好地表达了你的意图):

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