f3(arr2)
はarr2
の値をのように変更しないと、arr1
になりましたか?可能であれば、変更された配列を返さずにf3
を期待どおりに動作させる方法はありますか?JavaScript - 配列は参照によって渡されますが、再割り当てされると失われます
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]
f3のarrは参考にすぎません。それを参照する配列を変更するには、 'splice'または同様の' Array.prototype'メソッドを使用する必要があります。 – blld