【发布时间】:2015-12-14 14:37:52
【问题描述】:
我有一个函数,它接受一个数组作为它的第一个参数。在这个函数中,构造了第二个数组。我希望将传递的数组替换为新数组。是否可以更改原始数组而不一一更改其项目?
var myFunct=function(arr){
var arr2=[];
for(var i=0;i<arr.length;i++)
arr2.push(2 * arr[i]);
arr=arr2;
}
var arr=[1,2,3];
myFunc(arr);
console.log(arr);
//displays [1,2,3] not the desired [2,4,6];
如果我更改函数以使arr 的所有项目单独更改,该函数将按我的意愿运行。为什么会这样?是否可以通过简单地将 arr 分配给新数组来更改它?
//works fine
var myFunct=function(arr){
var arr2=[];
for(var i=0;i<arr.length;i++)
arr2.push(2 * arr[i]);
//arr=arr2;
for(var i=0;i<arr.length;i++)
arr[i]=arr2[i];
}
【问题讨论】:
标签: javascript arrays function arguments pass-by-reference