Замыкание (closure)
Коротко: Замыкание — функция, которая «помнит» переменные своего окружения — даже когда внешняя функция давно завершилась.
Подробнее: Замыкания возникают, когда внутренняя функция обращается к переменным внешней и возвращается или передаётся дальше. Они — основа счётчиков, фабрик, обратных вызовов, частичного применения (каррирование) и паттерна «модуль» в JavaScript. Поддерживаются в JavaScript, Python, Java (лямбда-выражения), C#, Go, Kotlin, Swift, Rust, Haskell и многих других.
Подробности
def counter():
state = 0См. также: лямбда-выражение, функция высшего порядка, обратный вызов, инкапсуляция