Вопрос проверяет знание методов оптимизации функций.
Мемоизация сохраняет результаты выполнения функции для одних и тех же аргументов, чтобы избежать повторных вычислений. Это полезно для тяжелых функций (например, рекурсивных расчетов).
Мемоизация работает так:
При первом вызове функции с аргументами результат сохраняется в кеше.
При повторном вызове с теми же аргументами берется сохраненный результат.
Пример с рекурсивным вычислением факториала:
const memo = {};
function factorial(n) {
if (n in memo) return memo[n]; // Возвращаем кешированный результат
if (n <= 1) return 1;
memo[n] = n * factorial(n - 1); // Сохраняем результат
return memo[n];
}В современных библиотеках (например, Lodash) есть готовая функция _.memoize.
Мемоизация полезна для:
Рекурсивных функций (например, чисел Фибоначчи).
Дорогих вычислений (рендеринг, сложные математические операции).
Функций с одинаковыми аргументами (например, API-запросы).
Но она требует памяти для хранения кеша, поэтому не всегда подходит.