Javascript 预填充数组的推入式数组设置所有元素

Javascript 预填充数组的推入式数组设置所有元素,javascript,arrays,fill,Javascript,Arrays,Fill,我正在努力解决一个奇怪的数组。原型。填充行为: const arr = new Array(5) .fill([]); arr[0].push('element pushed to 0 only'); console.log(arr[1]); // ['element pushed to 0 only'] 数组中的所有项都用此字符串填充。我假设所有的[]数组都指向同一个数组,但我不明白为什么,有人能解释一下吗?在fill([])中,参数[]在调用fill之前进行计算 这和 const s

我正在努力解决一个奇怪的
数组。原型。填充
行为:

const arr = new Array(5)
   .fill([]);
arr[0].push('element pushed to 0 only');
console.log(arr[1]); // ['element pushed to 0 only']
数组中的所有项都用此字符串填充。我假设所有的
[]
数组都指向同一个数组,但我不明白为什么,有人能解释一下吗?

fill([])
中,参数
[]
在调用
fill
之前进行计算

这和

const subarray = [];
const arr = new Array(5);
arr.fill(subarray);
const subarray = [];
const arr = new Array(5);
for (var i=0; i<arr.length; i++) arr[i] = subarray;
这和

const subarray = [];
const arr = new Array(5);
arr.fill(subarray);
const subarray = [];
const arr = new Array(5);
for (var i=0; i<arr.length; i++) arr[i] = subarray;

但即使我使用新语法,这种情况也会发生:
const arr=new Array(5).fill(new Array());arr[0].push('element push-to-0 only');控制台日志(arr[1])什么新语法?调用fill将相同的数组放在任何地方?我指的是
new array()
语法-我假设这是为sure@AdamNagy新阵列不是问题所在。问题是你到处都在填充相同的元素。明白了!我现在明白了,我到目前为止是瞎的,非常感谢!:)