Javascript中的嵌套数组具有奇怪的、未定义的行为

Javascript中的嵌套数组具有奇怪的、未定义的行为,javascript,arrays,matrix,nested,Javascript,Arrays,Matrix,Nested,当我使用以下方法在Javascript中创建嵌套数组时: let arr = Array(5).fill(Array(5).fill("O")) 它正确地显示了“O”的5x5数组 然而,当我这样做时: arr[1][0] = "S" 它显示了以下结果: ["S", "O", "O", "O", "O"], ["S", "O", "O", "O", "O"], ["S", "O", "O", "O", "O"], ["S", "O", "O", "O", "O"], ["S", "O", "O

当我使用以下方法在Javascript中创建嵌套数组时:

let arr = Array(5).fill(Array(5).fill("O"))
它正确地显示了“O”的5x5数组

然而,当我这样做时:

arr[1][0] = "S"
它显示了以下结果:

["S", "O", "O", "O", "O"],
["S", "O", "O", "O", "O"],
["S", "O", "O", "O", "O"],
["S", "O", "O", "O", "O"],
["S", "O", "O", "O", "O"]

而不是仅仅覆盖单个O。

数组。fill
返回数组,因此每个“行”上都存在相同的数组引用。

每行都必须是对相同数组的引用。
。fill
接受单个值,它不会反复调用这些方法。“Javascript中的嵌套数组具有奇怪的、未定义的行为”JavaScript中没有未定义的行为。有时候很奇怪,是的,但从来没有定义过。:-)