基本型別和引用型別
阿新 • • 發佈:2022-03-26
基本型別
基本資料型別包含: Number(數值)、String(字串)、Boolean(布林值)、Null、Undefined、Symbol(ES6引入的,表示獨一無二的),具有以下特點:
(1)基本型別的訪問是按值訪問的;
(2)不能新增屬性和方法;
(3)基本型別的變數是存放在棧區的,包括變數識別符號和變數的值(棧區不會設值太大,主要用來存放基本型別);
(4)基本型別的複製就是在棧記憶體中開闢一個新的儲存區域來儲存新的變數;
(5)基本型別的比較是值的比較
引用型別
包含三類:
基本引用型別: Object(物件)、Array、RegExp、Date、Function
基本包裝型別:String、Number、Boolean
單體內建物件:Global、Math
具有以下特點:
(1)引用型別的值是按引用訪問的;
(2)引用型別可以擁有屬性和方法,且可動態改變;
(3)儲存需要記憶體的棧區和堆區,其中棧區儲存變數識別符號和指向記憶體中該物件的指標;
(4)引用型別的比較是引用的比較;
(5)引用型別的複製將複製引用地址
為什麼需要 棧、堆 儲存空間
因為JS引擎需要用棧來維護程式執行期間上下文的狀態(呼叫棧),如果棧空間太大的話,會影響上下文的切換效率,進而影響整個程式的執行效率。
因此一般棧空間不會設定太大,儲存基本型別的小資料,引用型別儲存到堆中。