這是稍微很難解釋,但我想要做的事,看起來像這樣:如何有多個「和」邏輯運算符和「或」邏輯運算符
if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();
,但它最終沒有它匹配運行第一個運營商。我想知道如何讓最後一名操作員除了2個不同的輸入,同時仍然確保在運行之前滿足其他標準。
這是稍微很難解釋,但我想要做的事,看起來像這樣:如何有多個「和」邏輯運算符和「或」邏輯運算符
if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();
,但它最終沒有它匹配運行第一個運營商。我想知道如何讓最後一名操作員除了2個不同的輸入,同時仍然確保在運行之前滿足其他標準。
你只需要使用括號,例如:
if(a == 4 && b == true && (c == "words" || c == "numbersandwords")) { DoSomething(); }
只需使用幾個括號來分隔您的or
零件和and
零件,並在最後一個字符串前添加c ===
。如果沒有最後的平等部分,'數字和字符串'總是等於真。
if(a === 4 && b === true && (c === "words" || c === "numbersandwords")){
DoSomething();
}
在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();
}
}