JavaScript 中的數(shù)據(jù)類型分為基本類型和引用類型?;绢愋褪侵笚?nèi)存中的簡(jiǎn)單數(shù)據(jù)段,而引用類型是指那些保存在堆內(nèi)存中的對(duì)象。
基本類型,有 undefined、null、string、 boolean、number,在 es6 中還新增了一個(gè)數(shù)據(jù)類型 symbol,表示獨(dú)一無(wú)二的值。這些類型在內(nèi)存中,占有固定大小的空間,它們的值保存在棧空間,我們通過(guò)按值來(lái)訪問(wèn)。數(shù)據(jù)在棧內(nèi)存中的存儲(chǔ)、使用方式,類似于數(shù)據(jù)結(jié)構(gòu)中的堆棧數(shù)據(jù)結(jié)構(gòu),遵循先進(jìn)后出的原則。
引用類型,即對(duì)象。棧內(nèi)存中存放地址,指向堆內(nèi)存中的對(duì)象,是按引用來(lái)訪問(wèn)的。如下圖,棧內(nèi)存中存放的是對(duì)象的訪問(wèn)地址,而在堆內(nèi)存中為對(duì)象的值分配空間。對(duì)象的值大小是不固定的,因此不能存放到棧內(nèi)存中。但是內(nèi)存的地址大小是固定的,所以可將對(duì)象的訪問(wèn)地址存到棧內(nèi)存中。這樣,在查找引用類型的值時(shí),先從棧內(nèi)存中讀取內(nèi)存地址,再根據(jù)地址獲取到存在堆內(nèi)存中的值。
