javascript中的奇怪情况:
var arr1=new Array();
var arr2=new Array();
arr1=[[1,2],[3,4]];
for (i=0;i<arr1.length;i++) {
arr2[i]=arr1[i];
}
alert(arr2[1][0]); //-> 3
arr1[1][0]=10;
alert(arr2[1][0]); //-> 10
我不明白为什么会这样
javascript中的奇怪情况:
var arr1=new Array();
var arr2=new Array();
arr1=[[1,2],[3,4]];
for (i=0;i<arr1.length;i++) {
arr2[i]=arr1[i];
}
alert(arr2[1][0]); //-> 3
arr1[1][0]=10;
alert(arr2[1][0]); //-> 10
我不明白为什么会这样
您在第 3 行构建了一个数组数组。
在 for 循环中,您不会克隆内部数组,而只需复制一个指向它的指针。因此,如果您稍后更改其中的内部数组的内容,arr1
也会影响arr2
.
这里没有错误。
如果要克隆内部数组,请使用以下内容:
for (i=0;i<arr1.length;i++) {
arr2[i] = arr1[i].slice(0);
}
arr1 和 arr2 都是数组的数组;因此,arr2 由与 arr1 相同的数组组成,因此分配给 arr1[i] 的元素“神奇地”显示为 arr2[i] 的相同元素。