JS中最初有:Undefined
烛恤,Null
,Boolean
抵皱,Number
善榛,String
和Object
六種數(shù)據(jù)類型,后來在es6規(guī)范中又添加了Symbol
類型呻畸,所有目前有其中數(shù)據(jù)類型移盆,這七種類型又可以分為四類:
- 基本類型:
Undefined
,Null
伤为,Boolean
咒循,Number
- 引用類型:
Object
- 特殊類型:
String
- 特殊類型:
Symbol
這幾種類型有什么區(qū)別
基本類型在內(nèi)存中擁有固定的大小,比如Number
的大小統(tǒng)一為8個字節(jié)的浮點數(shù)绞愚,整數(shù)部分的精確范圍是正負2的53次方叙甸,超過這個范圍的,js將無法精確的表示位衩,這也導(dǎo)致js不太適合科學和金融方面的計算裆蒸。
引用類型的大小不定,并且引用類型的值是可以變的(你可以為對象添加/修改屬性等)蚂四。
String
之所以特殊光戈,是因為它的長度不固定(可以構(gòu)建任意長度的字符串),但是遂赠,又無法修改字符串的值
let str1 = 'hello'
// 這里實際上是構(gòu)建了一個新的字符串'hello world'久妆, 而不是修改了'hello'
str1 = 'hello world'
所以String
可以說是與基本類型相似的不可變的引用類型。
Symbol
的實例不是對象:
const s = Symbol()
typeof s // 打印出symbol跷睦,說明不是對象
Symbol
是一種類似于字符串的數(shù)據(jù)結(jié)構(gòu)筷弦,用于表示獨一無二的值。