Anonyme Funktionen können effektiv sicherstellen, dass JavaScript auf der Seite geschrieben wird, ohne dass globale Variablen kontaminiert werden.
Dies funktioniert sehr gut und ist wunderschön, wenn Sie JavaScript zu einer Seite hinzufügen, die nicht sehr vertraut ist.
1. Was ist eine anonyme Funktion?
Es gibt im Allgemeinen drei Möglichkeiten, eine Funktion in JavaScript zu definieren:
Funktion Keyword Anweisung:
Funktion fnMethodname (x) {alert (x);}
Funktionsliterale:
var fnMethodname = Funktion (x) {alert (x);}
Funktion () Konstruktor:
var fnMethodname = neue Funktion ('x', 'alert (x);')
Die obigen drei Methoden definieren dieselbe Methodenfunktion fnmeThodname.
Das erste ist die am häufigsten verwendete Methode. Die beiden letzteren sollen eine Funktion in den Variablen -FnMethodName kopieren, und diese Funktion hat keinen Namen, dh anonyme Funktion.
Tatsächlich haben viele Sprachen anonyme Funktionen.
2. Der Unterschied zwischen Funktionsliteralen und Funktion () Konstruktoren
Obwohl die Funktion wörtlich eine anonyme Funktion ist, kann die Syntax mit jedem Funktionsnamen angegeben werden. Es kann sich beim Schreiben einer rekursiven Funktion als sich selbst bezeichnen, kann jedoch nicht mit dem Function () -Konstruktor erfolgen.
var f = function fact (x) {if (x <= 1) return 1; sonst return x*fact (x-1); };
Der Function () -Konstruktor ermöglicht die dynamische Erstellung und Kompilierung des JavaScript -Codes zur Laufzeit. Auf diese Weise ähnelt es der globalen Funktion eval ().
Der Function () Constructor analysiert den Funktionskörper jedes Mal, wenn er ausgeführt wird, und erstellt ein neues Funktionsobjekt. Daher ist die Effizienz des Aufrufens des Funktionskonstruktors in einer Schleife oder häufig ausgeführte Funktion sehr gering. Im Gegenteil, Funktionsliterale werden nicht jedes Mal neu kompiliert, wenn sie darauf stoßen.
Beim Erstellen einer Funktion mit dem Function () -Konstruktor folgt sie nicht dem typischen Bereich, sondern führt sie immer als Funktion auf der obersten Ebene aus.
var y = "global";
Funktion ConstructFunction () {var y = "local"; Neue Funktion zurückgeben ("return y"); // kann keine lokale Variable} alert (constructfunction () ()) erhalten; // Ausgabe "global" und Funktionsschlüsselwortdefinition haben ihre eigenen Eigenschaften und sind viel schwieriger als Funktion () Konstruktoren.
Daher wird diese Technologie normalerweise selten eingesetzt.
Die Funktion der Funktion wörtlicher Expression und Funktionsschlüsselwortdefinition sind sehr ähnlich.
Berücksichtigung des vorherigen Unterschieds, obwohl es Nachrichten gibt, die besagen, dass wörtliche anonyme Funktionen Fehler unter bestimmten Webkit -Motoren unter OS X 10.4.3 haben.
Was wir jedoch normalerweise als anonyme Funktionen bezeichnen, beziehen sich auf anonyme Funktionen, die die wörtliche Funktionsform verwenden.
3. Code -Modus der anonymen Funktionen
Fehlermodus: Es kann nicht funktionieren, der Browser meldet einen Syntaxfehler.
function () {alert (1); } ();
Funktionsliterale: Deklarieren Sie zuerst ein Funktionsobjekt und führen Sie es dann aus.
(function () {alert (1);}) ();
Bevorzugter Ausdruck:
(function () {alert (2);} ());
Hohlbetreiber:
void function () {alert (3); } () sind gleich. Hedger Wang bevorzugt den dritten Typ aus persönlichen Gründen, während ich in den tatsächlichen Anwendungen den ersten Typ sehe und verwende.
4. Anwendung anonymer Funktionen
Der erste Satz in "Ein Modulmuster von JavaScript" ist "Globale Variablen sind der Teufel".
Mit dem VAR -Schlüsselwort können anonyme Funktionen effektiv sicherstellen, dass JavaScript auf der Seite geschrieben wird, ohne die globalen Variablen um Verschmutzungen zu verursachen.
Dies funktioniert sehr gut und ist wunderschön, wenn Sie JavaScript zu einer Seite hinzufügen, die nicht sehr vertraut ist.
Tatsächlich verwenden Yui und seine entsprechenden Beispiele viele anonyme Funktionen, und andere JavaScript -Bibliotheken verwenden auch viele von ihnen.
Der Eckpfeiler der funktionalen Programmierung in JavaScript.
Weitere Informationen finden Sie unter "Das Schreiben schöner JavaScript mit funktionaler Programmierungstechnologie" und "Leitfaden für funktionale JavaScript -Programmierung".
Die obige detaillierte Erläuterung der Nutzung und Vor- und Nachteile anonymer Funktionen in JavaScript ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.