首页 > 解决方案 > 为什么数组会将一个空数组推入另一个数组?

问题描述

为什么array2 [[], [], [], [], []]循环结束时的值?

var array1 = [];
var array2 = [];

for (let i = 1; i <= 10; i++) {
  array1.push(i);
  if (i % 2 === 0) {
    //console.log(array1);
    array2.push(array1);
    array1.length = 0;
  };
};
console.log(array1);
console.log(array2);

谁能解释一下,这段代码发生了什么?

标签: javascriptarraysloops

解决方案


JavaScript 中的数组是可变结构。array1每次都通过分配0来清空length. 1到10之间只有5个偶数(即:2、4、6、8、10),所以里面array2有5个引用array1


推荐阅读