Закриття (Closures) — це основна концепція в JavaScript, яка дозволяє функціям зберігати доступ до змінних з їх зовнішнього оточення, навіть після того, як зовнішня функція завершить виконання.
Що таке закриття (Closure) в JavaScript?
Закриття створюється, коли внутрішня функція зберігає доступ до змінних батьківської функції, навіть після завершення виконання батьківської функції.
Приклад закриття в JavaScript
function outerFunction(name) {
let greeting = "Hello, ";
return function innerFunction() {
console.log(greeting + name);
};
}
const sayHello = outerFunction("Alice");
sayHello(); // Вивід: Hello, Alice
Як це працює?
- Функція
outerFunction
виконується і визначає зміннуgreeting
. - Вона повертає
innerFunction
, яка все ще має доступ доgreeting
іname
. - Навіть після завершення виконання
outerFunction
,innerFunction
зберігає доступ до свого лексичного оточення, утворюючи закриття (closure).
Чому закриття важливі в JavaScript?
Закриття широко використовуються в сучасних JavaScript додатках, зокрема:
- Приватність даних і інкапсуляція — запобігає прямому доступу до певних змінних.
- Фабрики функцій — створення кількох екземплярів функції з налаштованою поведінкою.
- Обробники подій (Event Handlers) і зворотні виклики (Callbacks) — збереження стану між викликами функцій.
Перекладено з: JavaScript Closures in Simple English