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