2011
Dec
17

Javascript 並沒有像 C 語法一樣的 reference point ,所謂的 reference 就是指多個變數同時使用同一個記憶體空間(memory),這樣修改其中一個變數的值,其他相關的變數也會一並被修改,現在就來看看 Javascript Reference 的原理吧。

傳值:pass by value ,如果是一般用 = 去指定變數的值,Javascript 是會建立兩個不同的 Memory 去存取,所以兩個變數不會有任何關聯性,範例如下。

  1. var v1=10;
  2. var v2=v1;
  3. v2=15;
  4. //v1=10 , v2=15

pass by reference : 若是 Array 之間相互用 『 = 』 指定,則為傳址的方式,當其中一個 Array的值改變了,另外一個 Array 也會跟著改變,範例如下。

  1. var ay1=new Array(1);
  2. var ay2=ay1;
  3. ay2[0]=2;
  4. // ay1[0]=2 , ay2[0]=2

object 之間也是用 pass by reference 的方式,範別如下。

  1. var o1={v:1};
  2. var o2=o1;
  3. o2.v=2;
  4. //o1.v=2 , o2.v=2

其實在 Javscript中 ,Array 與 Object 都是用 Object的形式在處理的,所以都是用 reference 傳址的方式。


回應 (Leave a comment)