== 和 === 操作符詳細解析

flowerwxc發表於2015-12-30

== 和 === 他們倆到底有什麼樣的卻別,其實在之前還是 == 接觸的比較多.包括在使用其他程式語言. === 似乎是在Javascript獨有的.那我們來看看他們到底有什麼不同.

簡單來說, == 不會檢查型別, === 會檢測比較的兩方是否型別相同. 因此, == 比較也是可以的. 但是在JS引擎下它們將轉換為相同的型別進行比較.

=== 比較型別和值.因此,加入兩邊型別不同,答案永遠是false. 例如比較兩個字串,他們必須是同一字元的集合.另外的原始(number,boolean)必須分配同樣的值.

強制規則: 在JS引擎下隱式型別轉換使用 == 作比較.強制型別轉換使用下面的規則:

a) 如果兩個操作物件是同樣型別使用 ===

b) undefined == null

c) 如果一個操作物件是字串,另外一個是數字,將字串轉換為數字.

d) 如果一個是布林型別,另外一個不是布林型別,將布林型別轉換為數字,再作比較.

e) 當物件與一個字串或者數字作比較,試著將物件轉換為一個原始型別,在試著比較.

當比較物件時,要小心注意,識別符號必須引用同樣的物件或者同樣的陣列.

注意: NaN,null和undefined永遠不=== 其他型別. NaN 甚至不等於(===)它自己.

原文連結:http://www.gbtags.com/gb/share/10058.htm

相關文章