目 录CONTENT

文章目录

使用fill初始化二维数组的问题!

Hello!你好!我是村望~!
2022-08-10 / 0 评论 / 0 点赞 / 263 阅读 / 222 字
温馨提示:
我不想探寻任何东西的意义,我只享受当下思考的快乐~

下面的代码输出的数组是什么样呢?

const arr =(new Array(7)).fill([])
arr[0][0] = 1
console.log(arr)

你会发现一整列的元素都被设为了 1:
image-1660120255460
这就要从 fill 的工作机制讲起了。各位要清楚,当你给 fill 传递一个入参时,如果这个入参的类型是引用类型,那么 fill 在填充坑位时填充的其实就是入参的引用。也就是说下图中虽然看似我们给7个坑位各初始化了一个数组
其实这7个数组对应了同一个引用、指向的是同一块内存空间,它们本质上是同一个数组。因此当你修改第0行第0个元素的值时,第1-6行的第0个元素的值也都会跟着发生改变。

0

评论区