Dieses Mal werde ich Ihnen den Unterschied zwischen var foo = function () {} und function foo() vorstellen. Was sind die Vorsichtsmaßnahmen bei der Verwendung von var foo = function () {} und function foo? () Das Folgende ist ein praktischer Fall, schauen wir uns das an.
Eines Tages, als ich Code schrieb, stieß ich plötzlich auf dieses Problem und fasste es
JavaScriptDas „Hebeverhalten“ von Funktions- und Variablendeklarationen zusammen
Einfach ausgedrückt: Wenn wir die anonyme Funktion
var a = {}
auf diese Weise verwenden, lautet die Variablendeklaration a „ advanced" nach der Kompilierung, aber seine Aufgabe (d. h. a) wird nicht erweitert.
Das heißt, die anonyme Funktion wird nur initialisiert, wenn sie aufgerufen wird.
Wenn Sie
function a () {};
verwenden, werden die Funktionsdeklaration und ihre Zuweisung nach der Kompilierung erweitert.
Das heißt, die Vorverarbeitung des Funktionsdeklarationsprozesses ist abgeschlossen, bevor das gesamte Programm ausgeführt wird. Solange es sich im selben Bereich befindet, kann darauf zugegriffen werden, auch wenn es vor der Definition aufgerufen wird .
Anhand eines Beispiels
function hereOrThere() { //function statement return 'here'; } console.log(hereOrThere()); // alerts 'there' function hereOrThere() { return 'there'; }
werden wir feststellen, dass die alert(hereOrThere)
-Anweisung alert('there')
ausgeführt wird! Das Verhalten hier ist tatsächlich sehr unerwartet. Der Hauptgrund ist das „frühe“ Verhalten von JavaScript-Funktionsdeklarationen. Kurz gesagt, JavaScript ermöglicht es uns, Variablen und Funktionen zu verwenden, bevor sie deklariert werden, und die zweite Definition überschreibt. Mit anderen Worten, nachdem der obige Code kompiliert wurde, entspricht er
function hereOrThere() { //function statement return 'here'; } function hereOrThere() {//申明前置了,但因为这里的申明和赋值在一起,所以一起前置 return 'there'; } console.log(hereOrThere()); // alerts 'there'
Das von uns erwartete Verhalten
var hereOrThere = function () { // function expression return 'here'; }; console.log(hereOrThere()); // alerts 'here' hereOrThere = function () { return 'there'; };
Nachdem dieses Programm kompiliert wurde, entspricht es:
var hereOrThere;//申明前置了 hereOrThere = function() { // function expression return 'here'; }; console.log(hereOrThere()); // alerts 'here' hereOrThere = function() { return 'there'; };
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln zum Thema PHP-Chinesisch Webseite!
Empfohlene Lektüre:
So funktioniert der Javascript-Modullader
So verwenden Sie automatische Generatoren in ionic2
Automatische Aktualisierung und automatische Erfassung des Cookie-Ablaufs einstellen
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen var foo = function () {} und function foo(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!