前端百題斬【003】—— js中的基本類型和引用類型

寫該系列文章的初衷是「讓每位前端工程師掌握高頻知識點,爲工做助力」。這是前端百題斬的第3斬,但願朋友們關注公衆號「執鳶者」,用知識武裝本身的頭腦

3.1 基本類型

js中基本數據類型包含:Number(數值)、String(字符串)、Boolean(布爾值)、Null、Undefined、Symbol(ES6引入的,表示獨一無二的),其有如下特色:
  1. 基本類型的訪問是按值訪問的;
  2. 不能添加屬性和方法;
  3. 基本類型的變量時存在放棧區的,包括變量標識符和變量的值。(棧區不會設置太大,主要用來存在基本類型);
  4. 基本類型的複製就是在棧內存中開闢一個新的存儲區域來存儲新的變量;
  5. 基本類型的比較是值比較的。

image.png

3.2 引用類型

js中引用類型包含三類:前端

  1. 基本引用類型:Object(對象)、Array、RegExp、Date、Function;
  2. 基本包裝類型:String、Number、Boolean;
  3. 單體內置對象:Global、Math。

其具備如下特色:前端工程師

  1. 引用類型的值是按引用訪問的;
  2. 引用類型能夠擁有屬性和方法,且可動態改變;
  3. 存儲須要內存的棧區和堆區,其中棧區保存變量標識符和指向內存中該對象的指針;
  4. 引用類型的比較是引用的比較;
  5. 引用類型的複製將複製引用地址。

image.png

3.3 擴展——爲何須要「棧」和「堆」兩個存儲空間

由於JavaScript引擎須要用棧來維護程序執行期間上下文的狀態(調用棧),若是棧空間太大的話(即全部數據都存儲在棧空間中),會影響上下文的切換效率,進而影響整個程序的執行效率,因此一般狀況下棧空間不會設置太大,用於存儲基本類型這樣的小數據,而引用類型將存儲到堆中。

1.若是以爲這篇文章還不錯,來個分享、點贊吧,讓更多的人也看到spa

2.關注公衆號執鳶者,與號主一塊兒斬殺前端百題。指針

相關文章
相關標籤/搜索