据我了解,Javascript通过引用传递对象,而数组也是一个对象但是当我创建一个整数数组时,然后将它传递给函数,如下代码:
function testFunc(outTestArray) {
var aiTemp = [1,2,3,4];
/*Using slice(0) to clone array */
outTestArray = aiTemp.slice(0);
}
var aiTest = Array.apply(null, Array(4)).map(Number.prototype.valueOf, 0);
testFunc(aiTest);
console.log(aiTest.toString()); // aiTest still [0,0,0,0]
我也知道slice(0)函数只返回一个浅的数组副本,但是如果数组只是一个整数数组。所以我的问题是为什么没有修改aiTest的数据?
答案 0 :(得分:0)
您的错误是您的浅拷贝概念是错误的。
浅表副本会复制数组的内容,但不会复制数组成员引用的内容。
如果您的数组是对象的引用数组,则浅副本将复制引用,因此新数组将指向相同的基础对象。
但这个数组是整数。这些int本身会被浅拷贝复制。