2011-11-04 25 views
0

在JavaScript中編寫用於比較的簡單代碼段時,我觀察到一些奇怪的行爲。JavaScript中==和===運算符的確切行爲

案例1:

typeof(window.WHTStatement.DDL_TPTypeID.size()) ==> "number" 
typeof(window.WHTStatement.Txt_TPTypeValue.size()) ==> "number" 

window.WHTStatement.DDL_TPTypeID.size() == 1 == window.WHTStatement.Txt_TPTypeValue.size() 

返回true - 確定


案例2:

window.WHTStatement.DDL_TPTypeID.size() === 1 == window.WHTStatement.Txt_TPTypeValue.size() 

返回true - 確定


案例3:

window.WHTStatement.DDL_TPTypeID.size() === 1 === window.WHTStatement.Txt_TPTypeValue.size() 

返回false,爲什麼?

案例3究竟發生了什麼?有人可以詳細說明嗎?

+0

這可能有助於http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use/359509#359509 –

+0

這不是「怪異」的行爲; 「怪異」行爲和行爲之間存在着差異,但是你 - 不是其他任何人! - 沒想到。 –

回答

4

與Python不同,在JS x == y == z中不等於x == y && y == z而是(x == y) == z。所以你實際上將一個布爾值與一個在類型檢查中明顯失敗的數字進行比較。

==比較因爲1 == truetrue而奏效。