基本資料型別與引用資料型別

2021-10-09 08:47:41 字數 1190 閱讀 5931

在談深拷貝與淺拷貝之前,我們先來談談js的資料型別,這對接下來了解深拷貝淺拷貝起到一定的作用。

棧記憶體棧是自動分配相對固定大小的記憶體空間,而且由系統自動釋放的。

棧是線性結構,後進先出

基本資料型別:

null、 undefined、number、string、boolean、symbol(es6)。

基本資料型別存放在棧記憶體中,佔據固定的大小空間。是直接按值儲存的。因為記憶體空間大小確定且由系統自動分配和釋放,所以記憶體可以及時**,相較堆可更容易管理記憶體空間。

堆記憶體堆是動態分配記憶體的,記憶體大小不定,而且也不會自動釋放。

引用資料型別:

object(在js中除了基本資料型別其他的都是物件)陣列是物件,函式是物件,正則是物件。

引用資料型別存放在堆記憶體中,空間大小不一。實際上,引用資料型別的資料的位址指標儲存在棧記憶體,當要訪問引用型別的值時,是先從棧找到物件的位址指標,再通過指標找到堆中資料。

var arr1 =[1

,2,3

];var arr2 = arr1;

// 傳址 ,物件中傳給變數的資料是引用型別的,會儲存在堆中,複製的其實是指標,兩個變數最終指向同乙個物件。

var a = arr1[0]

;//傳值,把物件中的屬性/陣列中的陣列項賦值給變數,這時變數a是基本資料型別,儲存在棧記憶體中;改變棧中的資料不會影響堆中的資料

簡單的畫個圖。

基本資料型別與引用資料型別

基本資料型別與引用資料型別 基本資料型別 基本資料型別 大小 範圍 預設值 int 整形 32 2147483648 2147483648 0 long 長整形 64 9233372036854477808 9233372036854477808 0 float 浮點形 32 3.40292347e...

基本資料型別與引用資料型別

byte short int long float double boolean charstring class sun提供的 system.class sun提供的 student.calss 程式設計師自定義的 user.class 程式設計師自定義的 product.class程式設計師自定...

基本資料型別 引用資料型別

一 基本資料型別 基本資料型別 number string boolean null undefined symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。二 引用資料型別 引用資料型別 object 在j...