1. 程式人生 > >js--3.物件-2.基本和引用資料型別

js--3.物件-2.基本和引用資料型別

1      資料型別

1.1  資料型別

JS中的變數可能包含兩種不同資料型別的值:基本資料型別和引用資料型別。

1.2  基本資料型別

S中一共有5種基本資料型別:String、Number、Boolean、Undefined、Null。

基本資料型別的值是無法修改的,是不可變的。

基本資料型別的比較是值的比較,也就是隻要兩個變數的值相等,我們就認為這兩個變數相等。

基本資料型別都是單一的值"hello"123 true, 值和值之間沒有任何的聯絡。修改一個變數不會影響其他的變數

 

1.3  引用資料型別

引用型別的值是儲存在記憶體中的物件。物件屬於一種複合的資料型別,在物件中可以儲存多個不同資料型別的屬性。

當一個變數是一個物件時,實際上變數中儲存的並不是物件本身,而是物件的引用。

當從一個變數向另一個變數複製引用型別的值時,會將物件的引用複製到變數中,並不是建立一個新的物件。這時,兩個變數指向的是同一個物件。因此,改變其中一個變數會影響另一個。

  

2      棧和堆

JavaScript在執行時資料是儲存到棧記憶體和堆記憶體當中的。簡單來說棧記憶體用來儲存變數和基本型別。堆記憶體用來儲存物件。

2.1  棧中儲存的變數

在宣告一個變數時實際上就是在棧記憶體中建立了一個空間用來儲存變數。

1.如果是基本型別則在棧記憶體中直接儲存,

     2. 如果是引用型別則會在堆記憶體中儲存物件,而在棧記憶體儲存的變數實際是物件在堆記憶體中的地址。

2.2  比較

當比較兩個基本資料型別的值時,就是比較值。

而比較兩個引用資料型別時,它是比較的物件的記憶體地址,如果兩個物件是一摸一樣的,但是地址不同,它也會返回false