> Что еще можно сделать с помощью замыканий в JavaScript кроме счетчика (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: ITFB, Софт Медиа Групп

Стек: JavaScript

> Пример ответа

Замыкания в JavaScript - это мощный механизм, который выходит далеко за рамки простого счетчика. Вот несколько ключевых применений:

  1. Фабрики функций - создание функций с предустановленными параметрами. Например, function createMultiplier(factor) { return (x) => x * factor; } - const double = createMultiplier(2) запоминает factor.

  2. Модульный паттерн (IIFE) - инкапсуляция приватных данных. Через замыкание можно скрыть переменные и методы, экспортируя только публичный API: const counter = (() => { let count = 0; return { increment: () => ++count, get: () => count }; })().

  3. Мемоизация - кэширование результатов дорогих вычислений. Замыкание хранит кэш: function memoize(fn) { const cache = {}; return (arg) => cache[arg] ?? (cache[arg] = fn(arg)); }.

  4. Обработчики событий с сохранением состояния - например, при клике на кнопку запоминать, сколько раз она была нажата, без глобальных переменных.

  5. Каррирование - преобразование функции с несколькими аргументами в цепочку функций, каждая из которых запоминает предыдущие аргументы через замыкание: const add = (a) => (b) => a + b.

  6. Таймеры и асинхронные операции - корректный захват переменных в циклах (например, for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 100); } - проблема решается через замыкание с let или IIFE).

  7. Ленивые вычисления - отложенное выполнение, когда результат вычисляется только при первом вызове и запоминается.

Таким образом, замыкания - это основа для функционального программирования, инкапсуляции и оптимизации в JavaScript.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью