似乎 JavaScript 试图以某种方式优化代码,所以如果我们想在循环largeArr
中用改变的一维数组 ( ) 的值填充多维数组 ( )并使用以下代码:smallArr
largeArr = []
smallArr = []
for (i=0; i<2; i++)
{
smallArr[0]=i
smallArr[1]=2*i
largeArr[i]=smallArr
}
我们得到了一个意想不到的结果:(largeArr=[[1,2],[1,2]]
必须是[[0,0],[1,2]]
)。因此,JavascriptsmallArr
首先计算值,然后才填充largeArr
. 为了得到正确的结果,我们必须smallArr
在循环中声明:
largeArr = []
for (i=0; i<2; i++)
{
smallArr = []
smallArr[0]=i
smallArr[1]=2*i
largeArr[i]=smallArr
}
然后它按预期工作(largeArr=[[0,0],[1,2]]
)。
为什么它会这样?