function makeRow(v=0){
const array = new Array(3);
array.fill(v);
return array;
}
function makeMatrix(v = 0){
const array = new Array(3)
array.fill(makeRow(v))
return array;
}
const a = makeMatrix()
a[0][1]=2
console.log(a)
/*
[
[0,2,0],
[0,2,0],
[0,2,0]
]
*/
如上代码,为什么我只操作了 a的第0项,但结果是每项都被改变了
求大神解答
数组是引用类型。makeRow(v)返回的实际上是const array = new Array(3);这个array在内存中的地址,fill方法将这个地址取了三遍,所以无论改哪个,3个都会改变。