Лексическое окружение
Каждая функция при создании запоминает ссылку на окружение, где она была объявлена. Поэтому внутренняя функция продолжает видеть переменные внешней даже после её возврата.
JavaScript Example
function counter() {
let count = 0;
return () => ++count;
}Практическое применение
- Приватное состояние без классов
- Мемоизация и кэширование результатов
- Каррирование и частичное применение функций