JavaScriptはどういうわけかコードを最適化しようとしているようです。したがって、ループ内largeArr
で1次元配列(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]]
)。
なぜこのように動作するのですか?