JS數(shù)據(jù)類型
基礎(chǔ)類型
- String
- Boolean
- Number
- Symbol
- Undefine
- Null(typeof(null) === "object")
復(fù)合類型: 對(duì)象
- Object(Array, Json)
顯示類型轉(zhuǎn)換
Number的原始類型轉(zhuǎn)換規(guī)則
- 數(shù)值轉(zhuǎn)換后還是數(shù)值
- 字符串如果可以解析為數(shù)值則為數(shù)值, 空字符串為0, 無法解析的字符串為NaN
- 布爾轉(zhuǎn)數(shù)值, true轉(zhuǎn)為1, false轉(zhuǎn)為0
- null轉(zhuǎn)換為0
Number的對(duì)象類型轉(zhuǎn)換規(guī)則
傳入實(shí)例M, 先調(diào)用M的
valueOf()
, 如果返回值V為基本數(shù)據(jù)類型, 則直接使用Number(V), 求最終返回值
如果T不屬于基本數(shù)據(jù)類型, 則調(diào)用M的toString()
, 如果返回值S為基本數(shù)據(jù)類型, 則直接使用Number(S),求最后的結(jié)果, 如果S不屬于基本數(shù)據(jù)類型, 則直接返回NaN
String的原始類型轉(zhuǎn)換規(guī)則
- 數(shù)值(Number)轉(zhuǎn)為相應(yīng)的字符串
- 字符串(String) 轉(zhuǎn)換后還是字符串
- 布爾值(Boolean)轉(zhuǎn)換規(guī)則: true => 'true', false=> 'false'
- undefine 轉(zhuǎn)換為"undefine"
- null 轉(zhuǎn)換為'null'
String 的對(duì)象類型轉(zhuǎn)換規(guī)則
與Number的對(duì)象轉(zhuǎn)換規(guī)則類似, 區(qū)別是: 先調(diào)用對(duì)象的toString(), 然后再調(diào)用valueOf()
其實(shí)正常情況下, 對(duì)象調(diào)用自身的toString()后, 對(duì)象就可以轉(zhuǎn)換為string基本類型, valueOf() 沒有機(jī)會(huì)被調(diào)用, 但萬事有個(gè)例, 如果我們重新定義了對(duì)象的toString()方法,使其返回非基本類型的值, 那樣就有機(jī)會(huì)調(diào)用對(duì)象的valueOf()方法了
Boolean的原始類型轉(zhuǎn)換 和 對(duì)象類型轉(zhuǎn)換
undefined
,null
,NaN
,''
,-0
,+0
皆為false, 其余為true