正如我的理解,使用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'。 –