Почему при приравнивании внутри функции arr = arr.filter... не изменяется массив исходный? Я же к нему обращаюсь и перезаписываю его, но при alert-е выводятся исходные значение, при это если написать alert внутри функции, то все корректно.
При вызове arr.filter получаем новый массив из удовлетворяющих условие элементов и записываем его в переменную arr, тем самым перезаписав ее. Почему не работает?
let arr = [5, 3, 8, 1];
function filterRangeInPlace(arr,val1,val2) {
arr = arr.filter(el => (val1 <= el && el <= val2));
}
filterRangeInPlace(arr, 1, 4); // удалены числа вне диапазона 1..4
alert( arr) ; // [3, 1]