Замыкание — это функция вместе с ее лексическим окружением (областью видимости), "запомнившая" переменные из внешней функции даже после завершения ее выполнения.
Основная идея: внутренняя функция имеет доступ к переменным внешней функции, где она была создана.
Примеры использования:
Сохранение состояния:
javascript
Инкапсуляция (IIFE):
javascript
Создание фабрик функций:
javascript
Работа с асинхронными операциями (старый подход с var):
javascript
Замыкания могут потреблять больше памяти, так как сохраняют ссылку на внешние переменные, но их гибкость и возможности для инкапсуляции и сохранения состояния делают их важным инструментом.