JS資料型別轉換記錄

小花貓Jane發表於2017-12-14

一、資料型別:

  原始資料型別:
Boolean/ Null / Undefined / Number / String / Symbol(ES6
中新增資料型別
)

  物件:
Object

二、型別轉換

  
1
)顯示型別轉換:

  
a. Number
函式

  
b. String
函式

  
c.Boolean
函式

2

) 顯示型別轉換
Number
函式

  當原始型別轉換時,分別對應以下情況:

    數值:轉換後還是原來的值。

    字串:如果可以被解析為數值,則轉換為相應的數值,否則得到
NaN
,空字串轉換為
0

    布林值:
true
轉成
1
false
轉成
0

    
undefined:
轉成
NaN

    
null
: 轉成
0

  當為物件型別轉換時,遵循以下方式:

    
a.
先呼叫物件自身的
valueOf
方法,如果改方法返回原始型別的值(數值
/
字串
/boolean
等),則直接對該值使用  
Number
方法,不在進行後續步驟。

b.

如果
valueOf
方法返回複合型別的值,在呼叫物件自身的
toString
方法,如果
toString
方法返回原始型別的值,則對該值使用
Number
方法,不在進行後續步驟。

    
c.
如果
toString
方法返回的時複合型別的值,則報錯
.
    

    如例:
var a = {b: 1}; Number(a); //
輸出
NaN
,按照如上步驟規則,則

      首先
a.valueOf()
輸出
{b: 1},
返回不是原始資料型別,則呼叫
toString
方法,返回
“[object Object]”,
返回字串型別,
Number('[object, object]')
則輸出
NaN

    
3
)顯示型別轉換
String
函式

    當轉換為原始型別資料時,按照如下規則:

      數值:轉換為相應的字串

      字串:
轉換後還是原來的值

      布林值:
true
轉換為
‘true’
false
轉換為
‘false’

      
undefined
: 轉換為
“undefined”

null

: 轉換為
‘null’

    當轉換型別為物件型別時,按照如下規則轉換:     

      
a.
先呼叫
toString
方法,如果
toString
返回的時原始資料型別,則對該值使用
toString
方法,不在進行以下步驟。   

      
b.
如果
toString
方法返回對是複合型別的值,在呼叫
valueOf
方法,如果
valueOf
方法返回的是原始資料型別的值,則對該值使用
String
方法,不在進行以下步驟。

      
c.
如果
valueOf
方法返回的是複合型別的值,則報錯。

    
4
)顯示型別轉換
Boolean
函式

    當轉換資料為原始資料型別是,按照如下規則轉換

    當為
null
undifined
NaN
0
‘’,
轉換為
false
,其他轉換都為
true

    
5
)隱式型別轉換,如四則運算
/
判斷語句
/Native
呼叫,轉換與以上轉換規則相同
.

想要學習前端開發的同學,可以加群:
543627393
學習哦!


相關文章