Javascript是否通过引用或值传递数组?

时间:2016-03-05 04:33:00

标签: javascript arrays javascript-objects

据我了解,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的数据?

1 个答案:

答案 0 :(得分:0)

您的错误是您的浅拷贝概念是错误的。

浅表副本会复制数组的内容,但不会复制数组成员引用的内容。

如果您的数组是对象的引用数组,则浅副本将复制引用,因此新数组将指向相同的基础对象。

但这个数组是整数。这些int本身会被浅拷贝复制。