【发布时间】:2016-09-12 01:02:32
【问题描述】:
在下面的JS代码中,为什么f3(arr2)没有像f2(arr1)那样把arr2的值改成arr1?有什么方法可以让f3 按预期工作(如果可能,不返回修改后的数组)?
var arr1 = [1, 2, 3, 4];
var arr2 = [1, 2, 3, 4];
function f1() {
return [2, 3, 4, 5];
}
function f2(arr) {
arr.push(5);
}
function f3(arr) {
arr = f1();
}
f2(arr1);
console.log(arr1); // [ 1, 2, 3, 4, 5 ]
f3(arr2);
console.log(arr2); // [ 1, 2, 3, 4 ], expect [2, 3, 4, 5]
【问题讨论】:
-
arr in f3 只是一个引用,你应该
splice或使用类似的Array.prototype方法来更改它引用的数组。
标签: javascript pass-by-reference