Sie sind hier � 483
Anonyme Funktionen, Geltungsbereiche und Closures
var migrating = true;
if (migrating) {
quack(4);
fly(4);
}
var fly = function(num) {
for (i = 0; i < num; i++) {
console.log("Ich fliege!");
}
};
function quack(num) {
for (i = 0; i < num; i++) {
console.log("Quak!");
}
}
Wann wird eine Funktion definiert? Kommt darauf an …
Eine Sache haben wir Ihnen zu den Funktionen noch nicht gesagt. Wie Sie wissen, durchläuft der
Browser Ihren JavaScript-Code zweimal: Im ersten Durchgang werden alle Funktionsdeklarationen
geparst und die Funktionen definiert. Im zweiten Durchgang führt der Browser Ihren Code von oben
nach unten aus, und erst jetzt werden die Funktionsausdrücke definiert. Aus diesem Grund werden
per Deklaration erstellte Funktionen vor Funktionen definiert, die mithilfe eines Ausdrucks erzeugt
wurden. Und das legt wiederum fest, wann Sie eine Funktion in Ihrem Code aufrufen können.
Das wollen wir uns jetzt an einem konkreten Beispiel ansehen. Hier ist unser Code (ein wenig
umarrangiert) aus dem letzten Kapitel, den wir nun ausführen wollen:
Beachten Sie,
dass wir diese
Bedingung
vom Ende des
Codes hierher
verschoben
haben.
1
2
Wir starten am Anfang des Codes und finden alle Funktionsdeklarationen.
Wir haben eine Funktionsdeklaration gefunden. Wir erstellen
also die Funktion und weisen sie der Variablen quack zu.
4
Wir gehen an den Anfang zurück und werten jetzt den Code aus.
3
Wir sind am Ende angekommen. Es wurde nur eine Funktionsdeklaration gefunden.
5
Die Variable migrating erstellen und auf true setzen.
6
Die Bedingung ist wahr, also diesen Codeblock auswerten.
7
Die Funktionsreferenz aus quack auslesen
und mit dem Argument 4 aufrufen.
8
Die Funktionsreferenz aus fly auslesen … oh
Mist! fly ist nicht definiert!
WICHTIG: Lesen Sie das
Folgende in der Reihenfolge
der Zahlen. Beginnen Sie bei
1
, machen Sie mit 2 weiter
und so fort.
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.