0
我試圖將全局定義數組作爲參數傳遞給函數。 我想這個函數會把參數當作局部變量。 但它不...更改(在我看來)局部變量也改變全局數組的值。我究竟做錯了什麼?將全局數組傳遞給函數覆蓋數組
clickX = [];
for(var i=0; i<10; i++) {
clickX[i] = i;
}
doThis(clickX);
function doThis(x) {
for(var i=0; i<x.length; i++) {
x[i]++;
alert(clickX[i]); // this alerts the changed value of x[i] and not the origin value of the global array
}
}
的jsfiddle: https://jsfiddle.net/n546rq89/
對象在JS中通過引用傳遞。 ('var x = [1,2,3]; var y = x; y.splice(0,1); console.log(y); // [2,3]') – tymeJV
你沒有改變變量(這確實是本地的,你可以通過'x = []'確認),你正在改變對象(通過修改它的屬性)。 – Bergi
謝謝,不是它變得更清晰。如何在不更改原始對象的情況下更改函數中對象的值?以某種方式重複它? – Henning