Sie sind hier 495
Anonyme Funktionen, Geltungsbereiche und Closures
Was zum Henker ist eine Closure?
Ja klar, alle sagen, dass Closures für eine Programmiersprache ein absolutes Muss sind. Aber wie viele davon
verstehen tatsächlich, was sie wirklich sind oder wie sie benutzt werden? Verdammt wenige. Closures sind
das Sprachmerkmal, das alle verstehen wollen und das alle traditionellen Sprachen gerne hätten.
Und hier liegt das Problem. Selbst die gut informierten Leute im Geschäft sind der Meinung, dass Closures
schwer sind. Aber das soll nicht Ihr Problem sein. Wissen Sie, warum? Nicht weil dies ein »hirnfreundliches
Buch« ist und nicht weil wir erst eine Killer-Applikation bauen müssen, um Ihnen die Closures zu erklären.
Der Grund ist, dass Sie Closures gerade gelernt haben. Wir haben sie einfach nicht so genannt.
Deshalb kommt jetzt, ohne weitere Umwege, die superoffizielle Definition.
Wenn Sie bereits was durch dieses
Buch gelernt haben, sollten
Sie jetzt denken: »Aha, dies
ist das Wissen für die große
Gehaltserhöhung.«
Eine Closure ist eine Funktion mit einer
dazugehörigen Bezugsumgebung.
Okay, einverstanden. Diese Definition ist keine große Erleuchtung. Aber warum heißt es Closure?
Das wollen wir uns mal genauer ansehen, denn diese Frage kann darüber entscheiden, ob Sie
Ihren nächsten Job oder die Gehaltserhöhung bekommen oder nicht. Um das Wort Closure zu
erfassen, müssen Sie zunächst das Konzept des »Schließens« (engl. to close) verstehen.
Hier sind Ihre Aufgaben: 1. Finden Sie im unten stehenden Code alle freien Variablen und krei-
sen Sie sie ein. Eine freie Variable wird nicht im lokalen Geltungsbereich definiert. 2. Wählen Sie
die Umgebung, die die Funktion schließt, also die Werte für die freien Variablen bereitstellt.
function justSayin(phrase) {
var ending = "";
if (beingFunny) {
ending = " -- Ich meine ja nur …!";
} else if (notSoMuch) {
ending = " -- Eher nicht.";
}
alert(phrase + ending);
}
Wählen Sie die Umgebung,
die die Funktion wieder
schließt.
Kreisen Sie die freien Variablen in diesem
Code ein. Freie Variablen werden nicht
im lokalen Geltungsbereich definiert.
beingFunny = true;
notSoMuch = false;
inConversationWith = "Paul";
beingFunny = true;
justSayin = false;
oocoder = true;
notSoMuch = true;
phrase = "Do do da";
band = "Police";
Spitzen Sie Ihren Bleistift

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.