JS基本資料型別和引用資料型別的區別及深淺拷貝

2021-09-27 12:16:06 字數 2210 閱讀 2402

1. 資料型別

js分兩種資料型別:

基本資料型別:number、string、boolean、null、 undefined、symbol(es6),這些型別可以直接操作儲存在變數中的實際值。

引用資料型別:object(在js中除了基本資料型別以外的都是物件,陣列是物件,函式是物件,正規表示式是物件)

2. 基本資料型別(存放在中)

基本資料型別是指存放在中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問

var a =10;

var b = a;

b =20

;console.

log(a)

;// 10值

console.

log(b)

;// 20值

下圖演示了這種基本資料型別賦值的過程:

3.引用資料型別(存放在堆記憶體中的物件,每個空間大小不一樣,要根據情況進行特定的配置)

引用型別是存放在堆記憶體中的物件,變數其實是儲存的在棧記憶體中的乙個指標(儲存的是堆記憶體中的引用位址),這個指標指向堆記憶體。

引用型別資料在棧記憶體中儲存的實際上是物件在堆記憶體中的引用位址。通過這個引用位址可以快速查詢到儲存中堆記憶體中的物件

var obj1 =

newobject()

;var obj2 = obj1;

obj2.name =

"我有名字了"

;console.

log(obj1.name)

;// 我有名字了

說明這兩個引用資料型別指向了同乙個堆記憶體物件。obj1賦值給obj2,實際上這個堆記憶體物件在棧記憶體的引用位址複製了乙份給了obj2,但是實際上他們共同指向了同乙個堆記憶體物件,所以修改obj2其實就是修改那個物件,所以通過obj1訪問也能訪問的到。

淺拷貝只拷貝一層。對於物件屬性仍然為引用的內容並沒有進行拷貝,而是共用了乙個。

而深拷貝則是完全拷貝了兩份,互不影響。

//淺拷貝

//深拷貝:

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

1 資料型別 js分兩種資料型別 基本資料型別 number string boolean null undefined symbol es6 這些型別可以直接操作儲存在變數中的實際值。引用資料型別 object 在js中除了基本資料型別以外的都是物件,資料是物件,函式是物件,正規表示式是物件 2 ...

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

變數都是儲存在棧記憶體中,基本資料型別的值直接在棧記憶體中儲存。相互不影響。var a 123 var b a a b的值不變棧記憶體中 變數值 b123 a123 物件儲存在堆記憶體中 var obj new object obj.name 墨祈 var obj2 obj obj.name moq...

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

一.分類 1,五種簡單資料型別 基本資料型別 number,string,boolean,null,undefined,新增symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。1 undefined 宣告的變...