Если я передам массив в функцию и внесу изменения в массив внутри функции, массив, существующий вне функции, отражает эти эффекты. E.g.:
var myArr = [1, 2, 3];
function popAll(arr) {
while(arr.length) {
arr.pop();
}
}
popAll(myArr);
console.log(myArr.length); // prints "0"
Однако, если я пытаюсь переназначить ссылку на массив, чтобы он указывал на другой массив в функции, он не привязывается:
var myArr = [1, 2, 3];
function reassign(arr) {
while(arr.length) {
arr.pop();
}
var newArr = [1,2,3,4,5];
arr = newArr;
}
reassign(myArr);
console.log(myArr.length); // still prints "0"!!
Чего мне не хватает? Я хочу reassign(...)
назначить ссылку на новый массив.
Edit:
Я не хочу возвращать новый массив. Я хочу переназначить входящую ссылку. Кроме того, я хочу узнать, почему JS имеет такое поведение, которое кажется непоследовательным (или я недостаточно знаю, чтобы понять, как оно непротиворечиво).