因为在js
中,对象和数组都是引用传递,所谓引用传递就是当变量b
赋值为数组a
后,a
和b
便指向了同一个地址,这个地址的值便是[1, 2, 3]
这个数组,所以当修改b
,也就是修改了b
指向地址的数组,而a
也指向这个数组,所以a
的值也会跟着变化。
例如:
var a=[1,2,3];
var b=a;
b.push(4);
alert(a);//结果为[1,2,3,4] 当b改变的时候a也发生了改变
请指教这是为什么啊
解析:
a 把 [1,2,3] 装入箱子埋到地下,记录了位置坐标。
a 把位置告诉了 b
b 沿着坐标找到了箱子,打开放入 4
a 又回来打开箱子清点了一番,[1,2,3,4] 告知 alert
JavaScript (目前)有六大 primitive 类型,null、undefined、boolean、number、string、symbol,除此以外都是按照上面的方式传值,即传引用。