2011
Dec
17
Javascript 並沒有像 C 語法一樣的 reference point ,所謂的 reference 就是指多個變數同時使用同一個記憶體空間(memory),這樣修改其中一個變數的值,其他相關的變數也會一並被修改,現在就來看看 Javascript Reference 的原理吧。
傳值:pass by value ,如果是一般用 = 去指定變數的值,Javascript 是會建立兩個不同的 Memory 去存取,所以兩個變數不會有任何關聯性,範例如下。
- var v1=10;
- var v2=v1;
- v2=15;
- //v1=10 , v2=15
pass by reference : 若是 Array 之間相互用 『 = 』 指定,則為傳址的方式,當其中一個 Array的值改變了,另外一個 Array 也會跟著改變,範例如下。
- var ay1=new Array(1);
- var ay2=ay1;
- ay2[0]=2;
- // ay1[0]=2 , ay2[0]=2
object 之間也是用 pass by reference 的方式,範別如下。
- var o1={v:1};
- var o2=o1;
- o2.v=2;
- //o1.v=2 , o2.v=2
其實在 Javscript中 ,Array 與 Object 都是用 Object的形式在處理的,所以都是用 reference 傳址的方式。