我想我在這裏缺少一些基本的東西。爲什麼第三個IF條件是真的?該條件不應該評估爲假?我想做一些事情,其中編號不是1,2或3.IF語句中的多個或多個條件
var id = 1;
if(id == 1) //true
if(id != 1) //false
if(id != 1 || id != 2 || id != 3) //this returns true. why?
謝謝。
我想我在這裏缺少一些基本的東西。爲什麼第三個IF條件是真的?該條件不應該評估爲假?我想做一些事情,其中編號不是1,2或3.IF語句中的多個或多個條件
var id = 1;
if(id == 1) //true
if(id != 1) //false
if(id != 1 || id != 2 || id != 3) //this returns true. why?
謝謝。
因爲如果任何一個條件爲真,OR運算符將返回true,並且在您的代碼中有兩個條件爲真。
每三個條件獨立地評估[1]:
id != 1 // false
id != 2 // true
id != 3 // true
然後,它計算false || true || true
,這是真實的(a || b
爲真,如果任一a
或b
爲true)。我想你想
id != 1 && id != 2 && id != 3
如果ID不爲1,這不是2這是唯一真正的,它不是3
[1]:這並不完全正確,查找short-circuit evaluation。實際上,只評估前兩個條款,因爲這是確定表達式的真值所必需的。
當檢查ID!= 2,則返回true,並停止進一步的檢查
這一點很重要,如果您在檢查參數之前需要查看某個對象是否存在,它就派上用場了。 'if(obj!= null && obj.field == 2)' – 2012-02-03 17:18:25
-1 - 一個有趣的方面,但不是根本問題。對於底部構建,使用 – user66001 2014-03-26 14:37:45
要執行的代碼,其中的ID是不是(1或2或3),但OR運算符不分發了ID。說你想要什麼,唯一的方法就是
的ID不爲1,而id是不是2,而id是不是3
它轉換爲
if (id !== 1 && id !== 2 && id !== 3)
或者用於一些更pythonesque:
if (!(id in [,1,2,3]))
因爲'id'不等於'2'或'3'? 'false ||真|| true == true' – 2012-02-03 17:11:40
1!= 2 ..這顯然是正確的.. lollzzz – 2012-02-03 17:12:48
因爲id> 3,imo。 – ddacot 2012-02-03 17:13:50