在我的函数中,我定义了两个数组,第一个 ( array1 ) 具有预先初始化的长度。我添加了第二个数组 ( array2 ) 只是为了测试,因为我认为第一个的行为很奇怪。
我的代码:
function test(n = 3) {
array1 = new Array(n).fill(new Array(n));
array2 = [
[undefined, undefined, undefined],
[undefined, undefined, undefined],
[undefined, undefined, undefined]
];
document.getElementById("output").innerHTML = JSON.stringify(array1) + " (array 1) <br/>" + JSON.stringify(array2) + " (array 2)<br/><br/><hr/>";
for (i = 0; i < n; i++) {
array1[i][0] = i;
array2[i][0] = i;
}
document.getElementById("output").innerHTML += JSON.stringify(array1) + " (array 1) <br/>" + JSON.stringify(array2) + " (array 2)<br/><br/><hr/>";
}
<button onclick="test();">Press to test</button>
<br/><br/>
<div id="output"></div>
在for
循环中,我尝试更改第二个维度的第一个值。它应该输出[[0, undefined, undefined], [1, undefined, undefined], [2, undefined, undefined]]
,就像第二个数组一样。
我的问题是:为什么会发生这种情况?而且,我怎样才能制作一个在两个维度上都具有长度n的预初始化数组,它的行为类似于第二个数组?