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)