Когда лучше не использовать мемоизацию

«Когда лучше не использовать мемоизацию» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мемоизацию не стоит использовать, если:

  1. Функция вызывается редко или вычисления простые – накладные расходы на кеширование превысят выгоду.
  2. Функция возвращает разные значения при одинаковых аргументах (например, Math.random()).
  3. Функция имеет побочные эффекты – мемоизация может пропустить важные вызовы.
  4. Аргументы сложные для сравнения (объекты, массивы) без стабильного хеширования.
  5. Приложение чувствительно к памяти – кеш может расти бесконтрольно.

Пример плохого случая:

// Не мемоизируйте это!
const getCurrentTime = () => new Date().toISOString();
const memoizedTime = memoize(getCurrentTime); // Всегда возвращает первое значение