1. 程式人生 > >javascript的資料型別之基本型別和引用型別

javascript的資料型別之基本型別和引用型別

不知道在初學js的同學對下面的程式碼有沒有疑惑:

var a = [1,2,3];
var b = a;
b.push(4);
console.log(a); // [1,2,3,4]
var c = 1;
var d = c;
 d =2;
console.log(c); // 1
為什麼這兩段程式碼會有不一樣的結果?在第一段中,明明修改的b,為何a也改了?這就是基本型別引用型別的區別了。

一、概念

       在JavaScript高階程式設計第68頁是這麼介紹的,ECMAScript變數可能包含兩種不同資料型別的值:基本型別值和引用型別值。基本型別值指的是簡單的資料段,而引用型別值指那些可能由多個值構成的物件。

二、基本型別

Underfined、Null、Boolean、Number和String 五種。

特點: 

1. 儲存在棧中;

2. 每次複製時,在棧記憶體中建立一個新的記憶體存該變數。兩個變數互不影響。

三、引用型別

除去基本型別的五種。

特點:

1. 儲存在堆中;

2. 每次複製時,只是對引用指標進行傳遞,兩個變數共用同一個記憶體。