Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: optimizations

Как можно ускорить работу какой-то функции?

Вопрос проверяет знание методов оптимизации функций.

Короткий ответ

Мемоизация сохраняет результаты выполнения функции для одних и тех же аргументов, чтобы избежать повторных вычислений. Это полезно для тяжелых функций (например, рекурсивных расчетов).

Длинный ответ

Мемоизация работает так:

  1. При первом вызове функции с аргументами результат сохраняется в кеше.

  2. При повторном вызове с теми же аргументами берется сохраненный результат.

Пример с рекурсивным вычислением факториала:

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-запросы).

Но она требует памяти для хранения кеша, поэтому не всегда подходит.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#optimizations

Подпишись на React Developer в телеграм