> Как сделать так, чтобы функция в Map могла быть удалена сборщиком мусора в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: ООО Снэп АйТи
Стек: JavaScript
> Пример ответа
Чтобы функция, переданная в Map, могла быть удалена сборщиком мусора, необходимо использовать WeakMap вместо обычного Map. В WeakMap ключи должны быть объектами, и если на ключ больше нет ссылок извне, соответствующая пара ключ-значение автоматически удаляется сборщиком мусора. Однако, если вы хотите, чтобы именно функция (как значение) могла быть собрана, нужно, чтобы на неё не оставалось других ссылок, и она была привязана к ключу, который сам может быть удалён.
Пример с WeakMap:
JAVASCRIPTconst cache = new WeakMap();function createExpensiveFunction() {const fn = () => console.log('heavy work');// Функция fn будет удалена, когда объект key будет собран GCcache.set({}, fn);return fn;}
Если же вы используете обычный Map, то функция останется в памяти, пока существует сама Map, даже если на неё нет других ссылок. Для удаления из Map вручную используйте map.delete(key) или map.clear().
> Похожие задачи по frontend
Какой числовой формат даты подходит для сравнения объектов Date в JavaScript
Почему garbage collector не очищает переменную в случае замыкания в JavaScript
Как реализовать функцию шаблонизатора строки с подстановкой параметров в JavaScript?
Как работать с датами в JavaScript и использовать ли библиотеки
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью