鍍金池/ 問答/HTML/ 一個(gè)關(guān)于js數(shù)組賦值的問題

一個(gè)關(guān)于js數(shù)組賦值的問題

let test=new Array(2).fill(new Array(2).fill(0));
test[0][0]=1;
console.log(test);

這樣一段代碼,我覺得打印的結(jié)果應(yīng)該是

[
    [1,0],
    [0,0]
]

可結(jié)果卻是
clipboard.png

回答
編輯回答
默念

(test[0] === test[1]) //true
因?yàn)橹赶蛲粋€(gè)內(nèi)存地址,

這樣寫你就明白了

let d=new Array(2).fill(0)
let test=new Array(2).fill(d)
2017年7月26日 15:27
編輯回答
墻頭草

在js中Array是引用類型,所以

let a = [0, 0];
let b = a;
a[0] = 1;
console.log(b); // => [1, 0]

外層Array填充的兩個(gè)元素是同一個(gè)數(shù)組的引用,所以,你懂的

2018年3月20日 10:40
編輯回答
墨小羽
let test=new Array(2).fill(new Array(2).fill(0));
// 等于
const array = new Array(2).fill(0)
let test=new Array(2).fill(array);

而 array 是一個(gè)引用對象,所以test[0] === test[1],所以出現(xiàn)這樣的打印結(jié)果

2017年10月3日 08:28