Kurz erklärt
Eine Closure (Funktionsabschluss) ist eine Funktion, die sich die Variablen ihrer Umgebung „merkt“ – auch dann noch, wenn die äußere Funktion längst beendet ist.
Genauer
Closures entstehen, wenn eine innere Funktion auf Variablen der äußeren zugreift und zurückgegeben oder weitergereicht wird. Sie sind die Grundlage für Zähler, Fabriken, Callbacks, Teilanwendung (Currying) und das Modul-Muster in JavaScript. Unterstützt werden sie von JavaScript, Python, Java (Lambda-Ausdrücke), C#, Go, Kotlin, Swift, Rust, Haskell und vielen weiteren.