在面試中常常會遇見問類型轉換的問題,例如[] == false、[] == {}返回的是真仍是假等等。。。javascript
null undefined NaN 0 ''
記住只有這五個值是假的剩下的所有是真的。java
若是是兩個值比較是否相等,遵循以下規則。git
val1 == val2 若是兩個值可能不是同一數據類型,若是是==比較的話,會默認進行數據轉換。github
2.1 object == object,比較永遠不相等。面試
2.2 object == string 先將對象轉換成字符串(調用toString方法),而後再比較。code
[] 轉換成字符串 "" {} 轉換成字符串 "[object Object]"
2.3 object == boolean 先將對象轉換成字符串(toString),再把字符串轉換成數字(Number)、布爾值轉換成數字(true 轉換成 1 false 換成成 0)而後讓兩個數字進行比較。對象
Number("") 會輸出 0
2.4 object == number
先將對象轉換成字符串(toString),再把字符串轉換成數字(Number),再進行比較。blog
2.5 number == boolean 布爾值轉換成數字,而後再比較。ip
2.6 number == string 字符串轉換成數字,而後再比較。字符串
2.7 string == boolean 都轉換成數字,,而後再比較。
2.8 null == undefined 結果是true。
2.9 null 或者 undefined 比較另外的全部值,結果都是false,不相等。
例如:
[] == false 返回 true 2.3規則。 [] == [] 返回 false 2.1規則。 2 == true 返回 false 2.5規則。
=== 三個等號還會比較數據類型。
這些規則背下來,就能完美的應付這樣的面試題了,加油!