gpt4 book ai didi

Javascript 2D 数组意外行为

转载 作者:行者123 更新时间:2023-12-02 21:15:49 24 4
gpt4 key购买 nike

我目前正在使用 Javascript 进行开发,遇到了一个问题,我无法解决。我想说我在编程方面非常有经验,但是以前从未发生过这样的事情,而且我无法通过 friend 或互联网来解决它。

在下面的代码中,我创建了一个简单的二维数组,并用 0.1 填充每个位置。然后我记录该数组,修改它并再次记录它。您期望的输出是什么?我希望它记录一个充满许多 0.1 的数组,并记录另一个充满许多 0.1 的数组,并且在位置 1,2 处它应该是 100。

但真正的结果是两个相似的数组。当我注释掉编辑数组的行时,情况变得更加奇怪。然后输出数组再次相同,但没有修改。所以第一个日志取决于它之后执行的代码。这对我来说似乎非常非常奇怪。我还尝试将修改行设置为 1 秒超时。结果相同。

感谢您提前提供帮助。

let test = [];
for (let xx = 0; xx < 2; xx++) {
test.push([]);
for (let yy = 0; yy < 6; yy++) {
test[xx].push(0.1);
}
}

console.log(test);
test[1][2] = 100;
console.log(test);

最佳答案

查看您的问题中编辑的代码片段。你的代码工作正常。

如果您在浏览器控制台上看到两次相同的数组,这是因为浏览器的开发工具的工作方式所致。当您执行 console.log(test) 时,数组不会打印到控制台,它们的引用会打印在那里。然后“扩展”数组的内容。由于您记录了两次相同的引用,因此它们指向相同的值。

如果您记录 console.log(test.toString()),您会发现两个记录的值不同。

例如,在 Chrome 上:

展开之前:

Chrome example of logging arrays to the console

展开后:

Chrome example of logging arrays to the console

关于Javascript 2D 数组意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60975414/

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