492 Kapitel 11
Funktionen und lexikalischer Geltungsbereich
Wiedersehen mit Funktionsaufrufen
Hier haben wir die inner-Funktion und ihre Umgebung. Wir wollen inner einmal
aufrufen und sehen, was passiert. Dies ist der Code, den wir auswerten wollen:
1
var innerFunction = whereAreYou();
var result = innerFunction();
console.log(result);
inner
Function
var innerFunction = whereAreYou();
Zuerst rufen wir whereAreYou auf. Wir wissen bereits, dass sie
eine Funktionsreferenz zurückgibt. Also erstellen wir die Variable
innerFunction und weisen ihr die Referenz zu. Bedenken Sie, dass die
Funktionsreferenz mit einer bestimmten Umgebung verbunden ist.
Nach dieser Anweisung haben wir eine
Variable namens innerFunction, die auf
die von whereAreYou zurückgegebene
Funktion (und die dazugehörige
Umgebung) verweist.
Unsere neue Variable.
Die Funktion und ihre Umgebung.
var result = innerFunction();
Danach rufen wir innerFunction auf. Hierfür werten wir den Code im
Funktionskörper aus – und zwar im Kontext der Umgebung der Funktion,
wie hier:
function inner() {
return justAVar;
}
inner
Function
Die Funktion enthält eine einzige Anweisung,
die justVar zurückgibt. Den Wert von
justVar finden wir in der Umgebung.
2
function inner() {
return justAVar;
}
justAVar =
"Eine schlichte …"
justAVar =
"Eine schlichte …"
justVar hat den Wert
»Eine schlichte
LOKALE Variable«,
und der wird
zurückgegeben.
Sie sind hier 493
Anonyme Funktionen, Geltungsbereiche und Closures
var result = innerFunction();
console.log(result);
Zum Schluss weisen wir der Variablen result das Ergebnis der
Funktion zu und geben es auf der Konsole aus.
result
… chte LOKALE Variable
JavaScript-Konsole
Eine schlichte LOKALE Variable
Einen kleinen Moment … Judy hat Closures
noch gar nicht erwähnt? Irgendwie
scheint es damit zu tun zu haben, was wir
hier gerade machen. Mal sehen, ob wir das
selbst herausbekommen und ihr endlich
mal einen Schritt voraus sind.
innerFunction liest den Wert »Eine schlichte
LOKALE Variable« aus seiner Umgebung
aus und gibt ihn zurück. Danach wird er in
result gespeichert.
Dann müssen wir den String nur
noch auf der Konsole ausgeben.
3
Mist! Judy hatte
schon wieder
recht.
Äh, Jungs … das hier IST
eine Closure. Ihr lest besser
noch mal nach.

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.