So deklarieren Sie Funktionen
Normalerweise gibt es zwei Möglichkeiten, eine Funktion zu deklarieren:
foo () {}; // Funktion deklaration var foo = function () {}; // FunktionsausdruckDer Unterschied
1. Funktionsausdruck kann direkt mit Klammern danach ausgeführt werden
2. Die Funktionserklärung wird im Voraus vorgeschrieben
Voranalyse
Schauen wir uns zuerst ein Beispiel an:
foo (); // Funktionserklärung foo_later (); // foo_later ist keine Funktionsfunktion foo () {console.log ('Funktionserklärung'); } var foo_later = function () {console.log ('Funktionxpression'); }Wie Sie sehen können, wird die Funktionserklärung Foo vorbereitet und kann vor ihrem eigenen Code ausgeführt werden. Der Funktionsausdruck foo_later kann nicht. Um dieses Problem zu lösen, müssen wir zunächst den Arbeitsmechanismus des JavaScript -Parsers herausfinden.
Variabler Boost (Hebezeug)
Der JavaScript -Parser hebt die Variablen und Funktionserklärungen in seinem eigenen Bereich. Das heißt, das obige Beispiel wird tatsächlich vom Parser in die folgende Form verstanden und analysiert:
Funktion foo () {console.log ('Funktionserklärung'); } // Alle Funktionserklärungen sind erweitert var foo_later; // Funktionsausdrücke (Variablenerklärungen) nur die Variablen vorantreiben, und der Zuordnungsvorgang ist nicht erweitert Foo (); foo_later (); foo_later = function () {console.log ('Funktionxpression'); }Dies kann auch erklären, warum das Aufrufen einer Funktion vor dem Funktionsausdruck einen Fehler zurückgibt, da er noch nicht zugewiesen wurde. Es handelt sich nur um eine undefinierte Variable und kann natürlich nicht ausgeführt werden.
In ähnlicher Weise können wir auch versuchen, die Ausgabe des folgenden Codes zu erraten:
console.log (deklaredlater); var deklaredlater = "Jetzt ist es definiert!"; console.log (deklaredlater);
Dieser Code kann in das folgende Formular analysiert werden:
var deklaredlater; console.log (deklaredlater); // undefinedDeclaredlater = "Jetzt ist es definiert!"; console.log (deklaredLater); // Jetzt ist es definiert!
Die Variablenerklärung wird zuerst erwähnt (daher wird kein Fehler in der Variablen gemeldet), aber die Zuordnung ist nicht fortgeschritten, sodass das erste Ausgabeergebnis undefiniert ist.
Es sollte beachtet werden
Da Funktionserklärungen vorbereitet sind, verwenden Sie diese Methode nicht, um verschiedene Funktionen zu deklarieren. Versuchen Sie, die Ausgabe des folgenden Beispiels zu erraten:
if (true) {function aaa () {alert ('1'); }} else {function aaa () {alert ('2'); }} aaa ();Im Gegensatz zu dem, was wir erwartet hatten, taucht der Code mit "2" auf. Dies liegt daran, dass die beiden Funktionserklärungen vor der Ausführung der IF-Anweisung vorgeschrieben sind. Die IF-Anweisung ist also überhaupt nutzlos. Wenn AAA () aufgerufen wird, wird die folgende Funktion direkt ausgeführt.
Zusammenfassen
Durch die obige Erklärung können wir es wie folgt zusammenfassen:
• Die Deklaration der Variablen ist bis zur Spitze des Zielfernrohrs vorgebracht, und die Zuordnung bleibt bestehen
• Funktionserklärung des gesamten "vor"
• Wenn eine Funktion einer Variablen als Wert zugewiesen wird, ist nur die Variable "erweitert" und die Funktion nicht "erweitert".
Erleben Sie es mehr, indem Sie die obigen Beispiele üben. Auch als bewährte Praxis: Variable Deklarationen müssen oben in der Umfang/Funktion platziert werden (JavaScript hat nur Funktionsumfang!).
Der obige Artikel versteht die Funktionserklärungen, Funktionsausdrücke und die variable Verbesserung umfassend, was ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.