496 Kapitel 11
Closures definieren
Eine Funktion »schließen«
function justSayin() {
// hier kommt der
// Code hin
}
Closure
Vermutlich haben Sie das schon in der vorigen Übung her-
ausgefunden, aber wir wollen trotzdem noch einmal darauf
eingehen: Eine Funktion enthält in ihrem Funktionskörper
typischerweise lokale Variablen (inklusive möglicher Parame-
ter). Außerdem kann sie Variablen enthalten, die nicht lokal
definiert sind und die als freie Variablen bezeichnet werden. Der
Name frei kommt von der Tatsache, dass freie Variablen im
Funktionskörper an keine Werte gebunden sind (bzw. nicht
lokal in der Funktion definiert sind). Wenn wir jetzt eine
Umgebung haben, die für jede freie Variable einen Wert be-
reithält, können wir sagen, wir haben die Funktion geschlossen.
Und wenn wir die Funktion und ihre Umgebung zusammen-
nehmen, können wir sagen, wir haben eine Closure.
Wenn eine Variable in meiner
Funktion weder lokal noch global
definiert ist, können Sie darauf
wetten, dass sie aus der Funktion
stammt, in der ich verschachtelt
bin und die in meiner Umgebung
zur Verfügung steht.
Eine Closure bekommt man, wenn man eine Funk-
tion mit freien Variablen mit einer Umgebung
kombiniert, die die entsprechenden Bindungen
für die freien Variablen bereitstellt.
beingFunny = true;
notSoMuch = false;
inConversationWith = "Paul";
Sie sind hier 497
Anonyme Funktionen, Geltungsbereiche und Closures
Jetzt beschäftigen wir uns schon seit
zehn Seiten mit dem Thema. Bekommen
wir irgendwann auch mal echten
JavaScript-Code zu sehen, oder bleiben
wir für immer in Theoretistan? Warum
mache ich mir über diese Low-Level-
Funktionen überhaupt einen Kopf? Ich
muss doch bloß Funktionen schreiben und
sie aufrufen, oder?
Wenn Closures nicht so verdammt nützlich wären,
würden wir zustimmen. Es tut uns leid, dass wir Sie durch
diesen Sumpf des Lernens zerren müssen, aber seien Sie sicher,
es ist die Sache auf jeden Fall wert. Closures sind nämlich nicht
einfach ein theoretisch-funktionales Programmierkonstrukt, sondern
sie stehen auch für eine mächtige Programmiertechnik. Nachdem
Sie die Funktionsweise von Closures kennen, ist es Zeit, auch ihre
Verwendung zu lernen. (Und wir meinten es ernst, als wir sagten,
dass Ihr Ansehen bei Managern und Mitarbeitern dadurch steigt.)
Und noch etwas: Closures finden sich fast überall. Sie werden Ihnen
derartig in Fleisch und Blut übergehen, dass Sie sie bald ohne
Probleme in Ihrem eigenen Code einsetzen werden. Nehmen wir
uns also etwas Closure-Code, und Sie werden wissen, worüber wir
hier eigentlich reden.

Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.