正如我的理解,使用Javascript传递对象通过引用,和一个阵列还一个目的,但是当我创建整数的数组,然后将它传递给函数,如下面的代码: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]
我也知道,切片( 0)函数只是返回一个数组的浅拷贝,但如果数组只是一个整数数组。所以我的问题是为什么aiTest的数据没有被修改?
http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language –
重复。简短回答:Javascript总是按值传递,除了数组/对象。 –
JavaScript始终是按值(复制)。尽管对象的值是一个参考(按值参考)。 [JavaScript是传递引用还是传值语言?](https://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value -language)你期待的是一个指针,其中'outTestArray'指向JavaScript所没有的'aiTest'。 –