据我了解,JavaScript传递对象时是按引用传递的,而数组也是一种对象,但当我创建一个整数数组并将其作为下面代码所示传递给函数时:
我知道slice(0)函数只返回数组的浅拷贝,但如果该数组仅是一个整数数组,则我的问题是为什么aiTest的数据没有被修改?
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的数据没有被修改?
outTestArray
引用回aiTest
,但是 JavaScript 没有这个功能。 - Jonathan Lonowski=
。通过赋值outTestArray
,您修改了它的值。但是,aiTest
仍然指向原始数组。outTestArray[1] = 2
表现不同的原因是因为它修改了数组本身而不是修改任何变量。 - Jonathan Lonowski