关于javascript的一个面试题

代码如下:

const squares = Array(3).fill(Array(3).fill(null));
squares[0][0] = 1
console.log(squares) 

打印结果是什么?
我开始的答案是:

[[null,null,null],[null,null,null],[null,null,null]]

但是真实答案是:

[[1,null,null],[1,null,null],[1,null,null]]

为什么?难道是fill函数会保存执行结果吗?不是太理解
万望解惑

阅读 329
评论
    3 个回答
    • 1.2k

    因为Array.fill()如果填充类型为对象,则为浅拷贝。数组内的3个对象指向的都是同一个内存地址。