ECMAScript Closures
- Vorherige Seite Function-Objekt
- Nächste Seite Orientiert auf Objekte
Der am leichtesten missverstandene Punkt von ECMAScript ist, dass es Closures unterstützt.
Closures beziehen sich auf lexikalische Darstellungen von Funktionen, die Variablen enthalten, die nicht berechnet werden, das heißt, Funktionen können Variablen verwenden, die außerhalb der Funktion definiert wurden.
Einfaches Beispiel für Closures
Die Verwendung globaler Variablen in ECMAScript ist ein einfaches Beispiel für Closures. Überlegen Sie sich das folgende Code-Beispiel:
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();
In diesem Code wird der Wert der Variable sMessage nach dem Laden des Skripts in den Speicher nicht für die Funktion sayHelloWorld() berechnet. Diese Funktion erfasst den Wert von sMessage nur, um ihn später zu verwenden, das heißt, der Interpreter weiß, dass der Wert von sMessage beim Aufruf der Funktion sayHelloWorld() (in der letzten Zeile) überprüft werden muss. sMessage wird beim Aufruf der Funktion sayHelloWorld() (in der letzten Zeile) zugewiesen und die Nachricht "hello world" angezeigt.
Komplexes Beispiel für Closures
Die Definition einer Funktion innerhalb einer anderen macht Closures komplexer. Zum Beispiel:
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
Hier beinhaltet die Funktion addNum() die Funktion doAdd() (Closures). Eine innere Funktion ist eine Closure, weil sie die Werte der Parameter iNum1 und iNum2 der äußeren Funktion sowie den Wert der globalen Variable iBaseNum verwendet. Der letzte Schritt von addNum() ruft doAdd() auf, um die beiden Parameter und die globale Variable zu addieren und deren Summe zurückzugeben.
Der wichtige Konzept, das hier beherrscht werden muss, ist, dass die Funktion doAdd() keine Parameter akzeptiert, sondern die Werte aus der AusführungsUmgebung verwendet.
Zu sehen ist, dass Closures ein sehr leistungsstarkes und vielseitiges Teil von ECMAScript sind und zur Ausführung komplexer Berechnungen verwendet werden können.
Tipp:Wie bei der Verwendung jeder fortgeschrittenen Funktion ist es bei der Verwendung von Closures vorsichtig zu gehen, da sie sehr komplex werden können.
- Vorherige Seite Function-Objekt
- Nächste Seite Orientiert auf Objekte