> Какие структуры данных использовать для хранения параметров и результатов мемоизации в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
Для хранения параметров и результатов мемоизации в JavaScript чаще всего используют Map или WeakMap, реже -объекты или массивы.
-
Map - оптимальный выбор для большинства случаев. Он поддерживает ключи любого типа (включая объекты и функции), сохраняет порядок вставки и имеет удобные методы
set/get/has. Пример:JAVASCRIPTconst memo = new Map();function expensive(n) {if (memo.has(n)) return memo.get(n);const result = n * 2; // дорогие вычисленияmemo.set(n, result);return result;} -
WeakMap - для случаев, когда ключи - объекты, и нужно избежать утечек памяти. WeakMap не препятствует сборке мусора, если объект-ключ удаляется из других мест. Подходит для мемоизации методов экземпляров классов или рекурсивных вызовов с объектными аргументами.
-
Обычный объект (
{}) - простой вариант, но ключи могут быть только строками или символами, что требует сериализации сложных параметров (например,JSON.stringify). Это может привести к потере производительности и ошибкам при циклических ссылках. -
Массив - редко, только если параметры - целые числа от 0 до N (например, для мемоизации чисел Фибоначчи). Но Map здесь удобнее из-за произвольных ключей.
Рекомендация: для функций с простыми аргументами (числа, строки) используйте Map; для объектных аргументов - WeakMap; избегайте объектов и массивов из-за ограничений и неочевидного поведения.
> Похожие задачи по frontend
Как различать и отличать action в Redux?
Почему в JavaScript переменная, объявленная через var, всплывает и инициализируется значением undefined?
Что такое JSON
Что такое метод filter в JavaScript и как он работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью