Почему исходный массив не изменяется когда мы его перезаписываем внутри функции?
let arr = [5, 3, 8, 1];
function filterRangeInPlace(innerArr,val1,val2) {
  innerArr = innerArr.filter(el => (val1 <= el && el <= val2));  
}

filterRangeInPlace(arr, 1, 4); // удалены числа вне диапазона 1..4

alert( arr) ; // [3, 1] Так должно быть понятнее.
У меня одинаковые имя переменной в скобках и название исходного массива, из-за этого были проблемы.