javascript資料型別轉換

jilei786發表於2018-06-12

javascript資料型別轉換

在面試中經常會碰見問型別轉換的問題,例如[] == false、[] == {}返回的是真還是假等等。。。

預設是false的五個值

null undefined NaN 0 ''
複製程式碼

記住只有這五個值是假的剩下的全部是真的。

轉換規則

  1. 如果是一個值判斷是否是真假,除了預設是false的五個值剩下的全部是true。

  2. 如果是兩個值比較是否相等,遵循如下規則。

    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規則。
複製程式碼

=== 三個等號還會比較資料型別。

這些規則背下來,就能完美的應付這樣的面試題了,加油!

我的部落格和GitHub地址

github.com/lanpangzhi

blog.langpz.com

相關文章