嚴格比較運算符 ===
僅當兩個操做數的類型相同且值相等爲 true,不作類型轉換,比較容易理解指針
類型轉換比較運算符 ==
- 當比較數字和字符串時,字符串會轉換成數字值。 JavaScript 嘗試將數字字面量轉換爲數字類型的值。 首先, 一個數學上的值會從數字字面量中衍生出來,而後獲得被四捨五入後的數字類型的值。
- 若是其中一個操做數爲布爾類型,那麼布爾操做數若是爲true,那麼會轉換爲1,若是爲false,會轉換爲整數0,即0。
- 若是一個對象與數字或字符串相比較,JavaScript會嘗試返回對象的默認值。操做符會嘗試經過方法valueOf和toString將對象轉換爲其原始值(一個字符串或數字類型的值)。若是嘗試轉換失敗,會產生一個運行時錯誤。
- 注意:當且僅當與原始值比較時,對象會被轉換爲原始值。當兩個操做數均爲對象時,它們做爲對象進行比較,僅當它們引用相同對象時返回true。
比較的特色
- 對於兩個擁有相同字符順序,相同長度,而且每一個字符的位置都匹配的字符串,應該使用嚴格比較運算符。
- 對於兩個數值相同的數字應該使用嚴格比較運算符,NaN和任何值不相等,包括其自身,正數零等於負數零。
- 對於兩個同爲true或同爲false的布爾操做數,應使用嚴格比較運算符。
- 不要使用嚴格比較運算符或比較運算符來比較兩個不相等的對象。
- 當比較一個表達式和一個對象時,僅當兩個操做數引用相同的對象(指針指向相同對象)。
- 對於Null 和 Undefined 類型而言,應使用嚴格比較運算符比較其自身,使用比較運算符進行互相比較。