2013-03-11 116 views
4

有人可以解釋這個嗎?JavaScript三等於和三變量比較

1 == 1  //true, as expected 
1 === 1  //true, as expected 
1 == 1 == 1 //true, as expected 
1 == 1 == 2 //false, as expected 
1 === 1 === 2 //false, as expected 
1 === 1 === 1 //false? <-- 

也有布爾邏輯,超過兩個號碼以這種方式進行比較的名稱(我把它叫做「三變的比較」,但我認爲這會是錯誤的...)

+0

[下面是在JavaScript兩個操作者的詳細比較性能試驗](http://conceptf1.blogspot.com/2014/01/ javascript-triple-equals-vs-double-equals-operators.html) – 2014-01-08 20:09:28

回答

8

該表達式:

1 === 1 === 1 

被評價爲:

(1 === 1) === 1 

評估圓括號內的表達式後:

true === 1 

並且該表達式在邏輯上是錯誤的。下面的表達式返回true如同預期:

1 === 1 === true 
+1

哈哈,應該測試更多:'5 == 5 == 5'也是錯誤的,但是因爲'1 == true'我被絆倒了使用我的例子'1 == 1 == 1'。 +1謝謝! – stackunderflow 2013-03-11 05:52:00

+0

還有一個問題:我可以在沒有繁瑣表達的情況下做我想做的事嗎(比如'x === y && y === z && x === z')? – stackunderflow 2013-03-11 05:57:23

+0

@DuncanNZ是否總是存在三個變量? – 2013-03-11 05:59:20