JavaScript中有常量池;JavaScript的內(nèi)存空間分為棧、堆、池、隊列,其中池指的就是常量池,常量值是用于存放常量的基本數(shù)據(jù)類型,一般將常量池歸類到棧內(nèi)存中,常量池內(nèi)的數(shù)據(jù)類型占用空間少、大小固定并且頻繁使用,所以系統(tǒng)效率較高。
本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript有常量池嗎
javascript有常量池
JavaScript內(nèi)存空間分為: 棧,堆,池,隊列。
棧內(nèi)存:用來存儲基本數(shù)據(jù)類型
常量池:用來存放常量 基本數(shù)據(jù)類型(一般把它歸類到棧內(nèi)存中)
堆內(nèi)存:用來存儲引用數(shù)據(jù)類型
當(dāng)變量存儲的基本數(shù)據(jù)類型時,該變量的值則存儲在棧內(nèi)存中
當(dāng)變量存儲的是引用數(shù)據(jù)類型時,該變量值則存儲的是一個系統(tǒng)分配的內(nèi)存地址,而真正的引用數(shù)據(jù)類型則存放在堆內(nèi)存中,而內(nèi)存地址指向了在堆內(nèi)存中的引用數(shù)據(jù)類型
棧內(nèi)存
以基本數(shù)據(jù)類型之一的數(shù)值型(Number)為例:
當(dāng)我們聲明一個基本數(shù)據(jù)類型變量時,會在棧內(nèi)存中存儲變量名和具體值
當(dāng)我們使用console.log(a) 時,我們輸出的是對應(yīng)的值
擴(kuò)展:
堆內(nèi)存
如
let a={1,2,3} let b={m:20}
上圖我們可以看到,變量a1為基本數(shù)據(jù)類型,而變量b,c為引用數(shù)類型,b,c在棧中存放的并不是變量的值,而是系統(tǒng)分配的一個內(nèi)存引用地址,真正的數(shù)據(jù)存放在堆內(nèi)容中
當(dāng)我們聲明變量來存儲一個引用數(shù)據(jù)類型時,會在棧內(nèi)存中生成一個變量名和一個具體值,而這個具體值是系統(tǒng)分配的一個內(nèi)存引用地址,這個地址指向了存放在堆內(nèi)存中,我們所創(chuàng)建的引用數(shù)據(jù)類型。當(dāng)我們調(diào)用該變量時,解析器會根據(jù)變量對應(yīng)的引用地址,引用對應(yīng)的對象。
【