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

Tru*_*yen 5 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]
Run Code Online (Sandbox Code Playgroud)

我也知道 slice(0) 函数只返回数组的浅拷贝,但如果数组只是一个整数数组。所以我的问题是为什么aiTest的数据没有被修改?

Chr*_*ing 0

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

浅拷贝复制数组的内容,但不复制数组成员引用的内容。

如果您的数组是对象引用的数组,则浅拷贝将复制引用,因此您的新数组将指向相同的底层对象。

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