Normalerweise deklarieren wir beim Schreiben von Funktionen in js eine Funktion auf die herkömmliche Weise von function fn () {}. Beim Lesen einiger hervorragender Plug-Ins sehen wir unweigerlich var fn = function () {} Unterschiede zwischen der Erstellung dieser Funktionen? Lassen Sie uns heute im Geiste des Aufbrechens und der Frage nach der Wahrheit über diese faszinierende Funktionsdeklaration sprechen.
Funktionsdeklaration
Beispielcode für die Funktionsdeklaration
Auf diese Weise haben wir eine Funktion namens fn deklariert. Glauben Sie, dass sie ausgeführt wird, wenn Sie sie zusätzlich zu dieser Funktion aufrufen? Oder wird ein Fehler gemeldet?
Konsolenausgabe:
Ja, die Fn-Funktion kann zu diesem Zeitpunkt aufgerufen werden. Hier ist eine Zusammenfassung der Gründe.
Zusammenfassung:
1: Zu diesem Zeitpunkt ist die fn-Funktion das Ergebnis der Variablen, die standardmäßig in der Variablen des globalen Kontexts gespeichert wird (kann anhand des Namens der window.function überprüft werden)
2: Diese Methode ist eine Funktionsdeklaration, die beim Eintritt in die globale Kontextphase erstellt wird. Sie ist bereits während der Codeausführungsphase verfügbar. ps: JavaScript initialisiert die Kontextumgebung (von global → lokal) jedes Mal, wenn eine Methode
eingegeben wird3: Es kann sich auf variable Objekte auswirken (nur im Kontext gespeicherte Variablen)
Funktionsausdruck
Beispielcode für einen Funktionsausdruck
Auf diese Weise deklarieren wir eine anonyme Funktion und verweisen ihren Verweis auf die Variable fn?
Rufen Sie die durch den Ausdruck oben und unten deklarierte Funktion noch einmal auf, um die Ausgabe auf der Konsole anzuzeigen.
Konsolendruckergebnis:
Sie können sehen, dass, wenn der Code ausgeführt wird und die Funktion fn() zum ersten Mal aufgerufen wird, Folgendes angezeigt wird: fn ist keine Funktion (fn ist keine Methode) und der Vorgang wird beendet, wenn ein Fehler auftritt angetroffen.
Dies zeigt, dass beim ersten Aufruf von fn() die Variable var fn nicht als Attribut des globalen Objekts vorhanden ist und der von fn referenzierte anonyme Funktionskontext nicht initialisiert wurde, sodass der vorherige Aufruf fehlgeschlagen ist .
Konsolendruckergebnis:
Es ist ersichtlich, dass es möglich ist, nach der Ausdrucksfunktion aufzurufen. Fassen wir zusammen, warum?
Zusammenfassung:
1: Erstens existiert die Variable selbst nicht als Funktion, sondern als Referenz auf eine anonyme Funktion (Werttypen sind keine Referenzen)
2: Während der Codeausführungsphase, wenn der globale Kontext initialisiert wird, existiert er nicht als globales Attribut, sodass keine Verschmutzung variabler Objekte verursacht wird
3: Diese Art der Deklaration ist in der Plug-in-Entwicklung allgemein üblich und kann auch als Aufruf einer Callback-Funktion in einem Abschluss
verwendet werdenFunktion fn () {} ist also nicht gleich var fn = Funktion () {} Sie sind im Wesentlichen unterschiedlich.
Das Obige ist der gesamte Inhalt dieses Artikels und der Vergleich ist auch sehr klar. Freunde, Sie müssen ihn sorgfältig lesen