javascript資料型別轉換
在面試中經常會碰見問型別轉換的問題,例如[] == false、[] == {}返回的是真還是假等等。。。
預設是false的五個值
null undefined NaN 0 ''
複製程式碼
記住只有這五個值是假的剩下的全部是真的。
轉換規則
-
如果是一個值判斷是否是真假,除了預設是false的五個值剩下的全部是true。
-
如果是兩個值比較是否相等,遵循如下規則。
val1 == val2 如果兩個值可能不是同一資料型別,如果是==比較的話,會預設進行資料轉換。
2.1 object == object,比較永遠不相等。
2.2 object == string 先將物件轉換成字串(呼叫toString方法),然後再比較。
[] 轉換成字串 "" {} 轉換成字串 "[object Object]" 複製程式碼
2.3 object == boolean 先將物件轉換成字串(toString),再把字串轉換成數字(Number)、布林值轉換成數字(true 轉換成 1 false 換成成 0)然後讓兩個數字進行比較。
Number("") 會輸出 0 複製程式碼
2.4 object == number 先將物件轉換成字串(toString),再把字串轉換成數字(Number),再進行比較。
2.5 number == boolean 布林值轉換成數字,然後再比較。
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規則。
複製程式碼
=== 三個等號還會比較資料型別。
這些規則背下來,就能完美的應付這樣的面試題了,加油!