Js数组的赋值问题(改变引用||数组对象):
花里花哨的直接上代码:
var a = [1,2,3];
var b = a;
a = [4,5,6];
alert(b);
猜猜结果是什么(/*[1,2,3]*/);
可是下面这个:
var a = [1,2,3];
var b = a;
a.pop();
alert(b); //[1,2]
是不是晕了,如图:
答案:
js中var a=b ,a,b分别是两个不同的对象,他们均指向同一个数组,这一点类似于c语言的指针(引用),也就是说他们的指向的地址是一样的,所以从他们的对象的方法上改变值时,js会找到其引用的值改变,因此a改变,b也会改变。而直接改变a的引用,那么b不受影响,毕竟他们是2个独立的对象。目前来看赋值一个变量等于一个对象,(数组也是对象),那么这个变量实际上是一个指针即引用,也就是对象的地址