Eine Closure ist eine Funktion, die sich die Umgebung merkt, in der sie entstanden ist. Das ist weniger exotisch, als es klingt, und ständig im Einsatz.
- Closure
Eine Funktion zusammen mit der Umgebung, in der sie erzeugt wurde, auf deren Variablen sie weiterhin zugreift.
Beispiel: „Eine Closure entsteht von selbst, sobald eine Funktion eine äußere Variable benutzt.“
Wo sie vorkommen
function zaehler() {
let stand = 0;
return () => ++stand;
}
const hochzaehlen = zaehler();
hochzaehlen(); // 1
hochzaehlen(); // 2Die zurückgegebene Funktion greift weiter auf stand zu, obwohl zaehler längst beendet ist. Dasselbe passiert bei jedem Event Listener, der eine Variable von außen benutzt.
Wozu das gut ist
Für Zustand, der nicht nach außen sichtbar sein soll, und für Funktionen, die mit einem festen Wert vorbelegt werden. Die Kehrseite: Solange die Funktion existiert, bleibt die Umgebung im Speicher. Listener, die nie abgemeldet werden, halten so größere Strukturen fest.