我想寫一個if/else語句來測試文本輸入的值是否等於兩個不同值中的任何一個。這樣的(請原諒我的僞英文代碼):如何測試變量是否等於兩個值之一?
var test = $("#test").val(); if (test does not equal A or B){ do stuff; } else { do other stuff; }
我怎樣寫的條件第2行的if語句?
我想寫一個if/else語句來測試文本輸入的值是否等於兩個不同值中的任何一個。這樣的(請原諒我的僞英文代碼):如何測試變量是否等於兩個值之一?
var test = $("#test").val(); if (test does not equal A or B){ do stuff; } else { do other stuff; }
我怎樣寫的條件第2行的if語句?
將!
(否定運算符)視爲「不」,將||
(布爾運算符)視爲「或」並將&&
(布爾運算符)視爲「和」。見Operators和Operator Precedence。
因此:
if(!(a || b)) {
// means neither a nor b
}
然而,使用De Morgan's Law,它可以被寫成:
if(!a && !b) {
// is not a and is not b
}
a
以上b
可以是任何表達式(如test == 'B'
或任何它需要) 。
再次,如果test == 'A'
和test == 'B'
,是表情,注意第一形式的擴展:
// if(!(a || b))
if(!((test == 'A') || (test == 'B')))
// or more simply, removing the inner parenthesis as
// || and && have a lower precedence than comparison and negation operators
if(!(test == 'A' || test == 'B'))
// and using DeMorgan's, we can turn this into
// this is the same as substituting into if(!a && !b)
if(!(test == 'A') && !(test == 'B'))
// and this can be simplified as !(x == y) is the same as (x != y)
if(test != 'A' && test != 'B')
一般來說它會是這樣的:
if(test != "A" && test != "B")
你或許應該對JavaScript的邏輯運算符讀了。
你用了「或」你的僞代碼,但基於你的第一句話,我認爲你的意思是。對此有一些困惑,因爲這不是人們通常說話的方式。
你想:
var test = $("#test").val();
if (test !== 'A' && test !== 'B'){
do stuff;
}
else {
do other stuff;
}
ECMA2016簡短的回答,特別好檢查againt當多個值:
if (!["A","B", ...].includes(test)) {}
有沒有更簡單的方法來做到這一點(僞代碼):'if(test ===('A'||'B'))'(爲了邏輯的簡單,我刪除了'!'對這個概念更加好奇) – 2017-01-18 21:23:01
像'if(x == 2 | 3)'這樣的短版本會很好。 – 2017-04-16 16:56:04