背景 定义二维数组并赋值 let list = new Array(5).fill(new Array(3).fill(0)) 此时在给二维数组赋值时使用如下代码: list[2][1] = 2 看下赋值结束后的打印结果: 未达到预期。 ES6解析 我们看下阮一峰在es6中对fill的定义: 理解 这样就不难理解,当我们在fill时,虽然进行了new Array,但填充的是数组的地址,因此在进行赋值的时候,会改变所有指向该数组的值。