一、JS數(shù)據(jù)類型分為兩類原始數(shù)據(jù)類型和引用數(shù)據(jù)類型
二、原始數(shù)據(jù)類型
javascript 的原始數(shù)據(jù)類型有七種,分別是Number蹦浦、String扭吁、Boolean、null盲镶、undefined侥袜、symbol 、 BigInt
原始類型數(shù)據(jù)的特點(diǎn):值保存在變量本地,且賦值給其他變量后溉贿,其它變量改變不影響原來的值枫吧,變量存放在棧區(qū)的(棧區(qū)指內(nèi)存里的棧內(nèi)存).
1.boolean true & false
專門用來保存真或者假的類型,值二選一
2.null 空值類型
不指向任何地址,用于手動(dòng)賦值,清空內(nèi)容
3.undefined 未定義類型
只有一個(gè)值undefined,用于沒有賦值的變量的默認(rèn)值
4.number 數(shù)值類型
專門保存數(shù)字的類型,用于進(jìn)行數(shù)學(xué)計(jì)算等的數(shù)值.
所占空間:64位(8個(gè)字節(jié))二進(jìn)制保存.注:一個(gè)字節(jié)8個(gè)位.
5.string 字符串類型
專門用來保存字符串的類型;" ",用來存儲(chǔ)字符串類型的文本.
所占空間:使用unicode標(biāo)識(shí)的.英文字母和標(biāo)點(diǎn)對(duì)應(yīng)的是1字節(jié),而一個(gè)漢字對(duì)應(yīng)的則是兩個(gè)字節(jié).
6.symbol (ES6新增)
本質(zhì)上是一種唯一標(biāo)識(shí)符,可用作對(duì)象的唯一屬性名
7.BigInt (最新)
用于當(dāng)整數(shù)值大于Number數(shù)據(jù)類型支持的范圍時(shí)
1宇色、要?jiǎng)?chuàng)建BigInt九杂,只需要在數(shù)字末尾追加n即可
console.log( 9007199254740995n ); // → 9007199254740995n
2、創(chuàng)建BigInt的方法是用BigInt()構(gòu)造函數(shù)
BigInt("9007199254740995"); // → 9007199254740995n
三宣蠕、引用數(shù)據(jù)類型
Object,Function,Array (在JS中除了基本數(shù)據(jù)類型以外的都是對(duì)象例隆,數(shù)組是對(duì)象,函數(shù)是對(duì)象抢蚀,正則表達(dá)式是對(duì)象)
引用數(shù)據(jù)類型的特點(diǎn):引用類型的值是可變的镀层;引用類型的值是保存堆內(nèi)存中的對(duì)象;引用數(shù)據(jù)類型值的比較本質(zhì)上是內(nèi)存地址的比較.
四皿曲、兩種數(shù)據(jù)類型的區(qū)別
1唱逢、聲明變量時(shí)內(nèi)存分配不同
原始類型:在棧中吴侦,因?yàn)檎紦?jù)空間是固定的,可以將他們存在較小的內(nèi)存中-棧中坞古,這樣便于迅速查詢變量的值
引用類型:存在堆中备韧,棧中存儲(chǔ)的變量,只是用來查找堆中的引用地址绸贡。
2盯蝴、訪問機(jī)制不同
- 在javascript中是不允許直接訪問保存在堆內(nèi)存中的對(duì)象的,所以在訪問一個(gè)對(duì)象時(shí)听怕,首先得到的是這個(gè)對(duì)象在堆內(nèi)存中的地址捧挺,然后再按照這個(gè)地址去獲得這個(gè)對(duì)象中的值,這就是按引用訪問尿瞭。
- 而原始類型的值則是可以直接訪問到的闽烙。
3、復(fù)制變量時(shí)的不同
原始值:在將一個(gè)保存著原始值的變量復(fù)制給另一個(gè)變量時(shí)声搁,會(huì)將原始值的副本賦值給新變量黑竞,此后這兩個(gè)變量是完全獨(dú)立的,他們只是擁有相同的value而已疏旨。
引用值:在將一個(gè)保存著對(duì)象內(nèi)存地址的變量復(fù)制給另一個(gè)變量時(shí)很魂,會(huì)把這個(gè)內(nèi)存地址賦值給新變量,也就是說這兩個(gè)變量都指向了堆內(nèi)存中的同一個(gè)對(duì)象檐涝,他們中任何一個(gè)作出的改變都會(huì)反映在另一個(gè)身上遏匆。