let test=new Array(2).fill(new Array(2).fill(0));
test[0][0]=1;
console.log(test);
这样一段代码,我觉得打印的结果应该是
[
[1,0],
[0,0]
]
可结果却是
let test=new Array(2).fill(new Array(2).fill(0));
test[0][0]=1;
console.log(test);
这样一段代码,我觉得打印的结果应该是
[
[1,0],
[0,0]
]
可结果却是
(test[0] === test[1]) //true
因为指向同一个内存地址,
这样写你就明白了
let d=new Array(2).fill(0)
let test=new Array(2).fill(d)
在js中Array是引用类型,所以
let a = [0, 0];
let b = a;
a[0] = 1;
console.log(b); // => [1, 0]
外层Array填充的两个元素是同一个数组的引用,所以,你懂的
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
而 array 是一个引用对象,所以test[0] === test[1],所以出现这样的打印结果