В нерабочем коде создаётся новый массив – это новая область в памяти, новый объект.
Переменная
entity
внутри функции перестала указывать на тот же массив, что и
fruits
,
теперь указывает на новый пустой массив.
подробнееfunction loadEntities(entity, item) {
// тут entity из аргументов указывает туда же, куда и fruits
// можно вызывать методы того, внешнего массива, Те же push(), splice()
entity = []
// а тут entity стала указывать в другую сторону, на новый пустой массив
// fruits это уже никак не касается
entity.push(item)
// положили что-то в никчёмный массив
}
Вот рабочий вариант. Массив константа. Для его опустошения, длина устанавливается в
0
.
const fruits = []; // навсегда
loadEntities(fruits, 'banana');
console.log(fruits);
loadEntities(fruits, 'apple');
console.log(fruits);
function loadEntities(entity, item) {
entity.length = 0; // массив тот же, но пуст
entity.push(item);
}
Альтернативный способ опустошить массив, сохранив его объект:
entity.splice(0, entity.length);