JS類型轉換

JS類型轉換面試

這個坑有點深......數組

js的類型轉換有兩種  :  函數

 

一. 顯式類型轉換 (大搖大擺轉換) : spa

 

其中的方法有 :code

轉化爲數字對象

 

Number(n) :blog

Number(n) 
// 結果能是數字的狀況:
// n是 純數字, 純數字字符串, null, 空數組, 一位數組而且是數字或者純數字字符串, 布爾值
Number(123) 返回123
Number("123") 返回123
Number([]) 返回0
Number([123]) 返回123
Number(['123']) 返回123
Number(null) 返回0
Number(true) 返回1
Number(false) 返回0
// 其餘狀況會返回NaN

 

 

parseInt(n, index)字符串

     兩個參數, n是要轉換的值, index是基底, 即進制class

     規則和Number大體同樣object

     可是若是是字符串且以數字開頭, 好比 '123abc'

     截取前面數字並返回 123

 

 

parseFloat(n) :

     規則和parseInt幾乎徹底同樣, 可是沒有進制參數

  只是若是碰到小數點, 好比 '123.123.123abc'

     她會解析一位小數點 返回 123.123

 

 

轉化爲字符串 : 

 

toString() :

value.toString()
// 若是value是 :
//   數字, 返回數字字符串
//   布爾值, 返回布爾值字符串
//   字符串不用說
//   對象, 返回[object Object]
//   數組, 返回數組的字符串形式
//   函數, 把完整的函數表達式返回

 

 

String(n) :

參數傳遞不同, 其餘和toString()同樣

 

 

轉化爲布爾值 : 

 

Boolean() : 

轉化爲false的狀況: 空字符串, 數字0, false, undefined, null

其他狀況均轉化爲true

 

 

 

二 .  隱式類型轉換 (偷偷摸摸轉換, 但仍是調用的顯式類型轉換的方法) : 

 

isNaN()

調用Number()方法, 而後和NaN比對, 若是是NaN返回true, 不然返回false

 

 

++    --    +    -    

調用Number()方法, 而後進行數字操做

 

 

+

調用String()方法, 而後進行字符串鏈接操做

 

 

-    /    *    %

調用Number方法, 而後進行數字操做

 

 

&&    ||    !

調用Boolean() 方法

 

 

<    >    <=    >=

字符串和數字比較, 字符串經過Number()方法優先轉化爲數字

 

 

==    !=

雙等號比較和轉換規則以下(按照步驟進行):  !   !   !   !  比較重要

1. 先後只要有NaN, 一概返回false
2. 先後若是有布爾就將布爾轉化爲數字
3. 若是有字符串
  對方是對象: 對象使用toString()
  對方是數字, 字符串轉數字
  對方是字符串, 直接比較
  其餘返回false
4. 若是是數字, 對方是對象, 對象取valueOf進行比較, 其餘一概返回false
5. null 和 undefined 不進行類型轉換, 但他們倆相等

隱式類型轉換幾乎就是爲筆試面試準備的, 工做中最好少用

相關文章
相關標籤/搜索