关于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 个回答
    • 4.1k

    代码等同于

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

    明白没?