Назад к вопросам
Junior
106
questionbank
Что такое замыкание в JavaScript?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Это функция, которая запоминает и имеет доступ к своей внешней области видимости (лексическому окружению) даже после того, как эта область видимости завершила выполнение.
Основные концепции:
- Лексическое окружение: Каждая функция имеет доступ к переменным, объявленным в ее собственной области видимости, а также к переменным во внешних областях видимости, в которых она была создана.
- Сохранение состояния: Благодаря замыканиям, внутренние функции могут сохранять доступ к переменным из внешних функций, сохраняя таким образом состояние.
Пример:
function createCounter() {
let count = 0; // Внешняя переменная, к которой имеет доступ внутреннее замыкание
return function() { // Замыкание
count++; // Доступ к переменной из внешней области видимости
return count;
};
}
const counter1 = createCounter();
console.log(counter1()); // 1
console.log(counter1()); // 2
const counter2 = createCounter(); // Создается новое независимое замыкание
console.log(counter2()); // 1
В этом примере внутренняя анонимная функция является замыканием. Она "запоминает" переменную count из внешней функции createCounter, даже после того, как createCounter завершила свое выполнение. Каждое новое создание createCounter порождает новое, независимое замыкание с собственным значением count.
Применение:
- Приватные переменные и методы (паттерн Module).
- Мемоизация.
- Функции-фабрики.
- Асинхронные операции (например, в колбэках).
Замыкания являются фундаментальным аспектом JavaScript и широко используются в функциональном программировании и при построении сложных архитектур.