访问变量分引用传递和值传递
值传递
基本数据类型值的传递,就是将变量的值复制给另一个变量。这两个变量是完全独立的。另一个变量获得的只是一个副本。
举个栗子:
var num1 = 3;
var num2 = num1;
复制前:
num1 | 3(Number类型) |
复制后:
num1 | 3(Number类型) |
num2 | 3(Number类型) |
也就是说,这两个变量可以参与任何操作都互不影响。
引用传递
当从一个变量向另一个变量的复制引用类型的值时,同样也会将存储在变量对象中的值复制一份到新变量分配的空间中。
不同的是这个值的副本是一个指针,而指针指向存储在堆中的对象。所以,复制结束后两个变量将引用同一个对象。因此,其中一个变量被改变,另一个变量也会被影响。
var obj1 = new Object();
//引用传递
var boj2 = obj1;
obj1.name = "zhangsan";
console.log(obj2.name);//"zhangsan"