> Что такое замыкания в JavaScript и для чего они нужны (JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Иннотех, Kvando Technologies, циан, ООО Премиум ИТ Солюшен, EvApps, VK, Инити, ITFB, Aston, IT-One, Софт Медиа Групп, Библио-Глобус, ООО Рокет Тех, Rutube, Avito, Exness, Сбер, Исходный Код, Evercode, Purrweb, Кэтрид Диджитал, SmartWay, Яндекс
Стек: JavaScript
> Пример ответа
Замыкание (closure) - это функция, которая "запоминает" своё лексическое окружение даже после того, как внешняя функция завершила выполнение. Простыми словами: замыкание даёт доступ к переменным внешней функции из внутренней, даже если внешняя уже вернула результат.
Пример:
JAVASCRIPTfunction createCounter() {let count = 0;return function() {count++;return count;};}const counter = createCounter();console.log(counter()); // 1console.log(counter()); // 2
Здесь внутренняя функция "замыкает" переменную count и продолжает её изменять.
Для чего нужны:
- Сокрытие данных - создание приватных переменных (как в примере выше).
- Фабрики функций - генерация функций с предустановленными параметрами (например,
function multiply(a) { return (b) => a * b; }). - Обработчики событий - сохранение состояния в асинхронном коде (например, в циклах с
setTimeout). - Каррирование - частичное применение аргументов.
Замыкания - основа многих паттернов в JavaScript, от модулей до функционального программирования.
> Похожие задачи по frontend
Что возвращает typeof для массива в JavaScript
Как реализовать рекурсивную чистую функцию для инверсии значений в объекте в JavaScript
Как записывать ошибки в массив по индексу, соответствующему индексу промиса в JavaScript?
Как использовать несколько потоков в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью