2013-05-12 214 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(); 
    } 
}