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 传址的方式。