JS二维数组赋值问题

背景

定义二维数组并赋值

 let list = new Array(5).fill(new Array(3).fill(0))

此时在给二维数组赋值时使用如下代码:

list[2][1] = 2

看下赋值结束后的打印结果:
JS二维数组赋值问题_第1张图片
未达到预期。

ES6解析

我们看下阮一峰在es6中对fill的定义:
JS二维数组赋值问题_第2张图片

理解

这样就不难理解,当我们在fill时,虽然进行了new Array,但填充的是数组的地址,因此在进行赋值的时候,会改变所有指向该数组的值。

你可能感兴趣的:(js,javascript)