gpt4 book ai didi

javascript - javascript中二维数组的初始化和赋值

转载 作者:行者123 更新时间:2023-11-29 19:51:30 25 4
gpt4 key购买 nike

var array = [];
var arr = [];
var i;
for (i = 0; i < 2; i++) {
var temp = [];// using array[i] = new Array() works fine
array.push(temp);
arr.push(temp);
}
array[0].push(1);
arr[0].push(2);
alert(array[0]);

上面的 javascript 代码给出了 [1,2] 作为输出。使用“new Array()”而不是“push([])”会得到 [1]。我能够找到问题所在,但我不明白为什么。有人可以解释一下吗

最佳答案

数组的工作方式类似于指向内存中某个位置的指针,因此 arr 变量 dosent 存储你正在推送的实际值实际上它指向存储值的内存位置在这种情况下,它指向“temp”所以当你写

for (i = 0; i < 2; i++) {
var temp = [];// using array[i] = new Array() works fine
array.push(temp);
arr.push(temp);
}

发生的事情是,在每个循环中它都创建了一个新的临时文件,但是两者都是“array an arr”指向内存中的同一位置,因此当其中一个正在修改该位置的内容时,它会更改另一个指向的数据

同时如果使用下面的代码

var array = [];
var arr = [];
var i;
for (i = 0; i < 2; i++) {
array[i] = new Array();
arr[i] = new Array();

}
array[0].push(1);
arr[0].push(2);
alert(array[0])

这里会发生的是,每次调用“new Array()”时,它都会在内存中分配一个新变量,并将其位置传回给您创建的数组指针“array & arr”所以现在每个 previos 指针都指向内存中的不同位置

关于javascript - javascript中二维数组的初始化和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17629170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com