Im folgenden JS-Code zugewiesen, warum nicht f3(arr2)
Änderung der Wert von arr2
wie f2(arr1)
zu arr1
tat? Gibt es eine Möglichkeit, f3
wie erwartet funktionieren zu lassen (wenn möglich, ohne das geänderte Array zurückzugeben)?JavaScript - Array als Referenz übergeben, aber verloren, wenn
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 ist nur eine Referenz, Sie sollten 'spleißen' oder verwenden Sie ähnliche' Array.prototype' Methode, um das Array, auf das es verweist, zu ändern. – blld