Array.fill() 初始化 二维数组 不能用引用类型

235 阅读1分钟

刷题的时候碰到了一个场景需要建造一个3*3的二维数组
用的方式是new Array(3).fill(new Array(3).fill(''))

image.png

出现的一个问题是当修改了里面某一个值的时候,其他的值也改变了,第一反应是 引用了同一片存储地址 后来是用了 new Array(3).fill().map(arr=>new Array(3).fill(''))解决

百度了一下,fill()引用问题的时候确实会有这种情况,但是没有搜到原理,所以个人猜想应该是这句话被解析成

const fillData = new Array(3).fill('');
const array = new Array(3).fill(fillData)

不知道有没有大佬可以看到然后解答一下