Heim >Web-Frontend >js-Tutorial >Eine Einführung in den Unterschied zwischen var foo = function () {} und function foo() beim Definieren einer Funktion in JavaScript (ausführliches Tutorial)
In diesem Artikel wird hauptsächlich der Unterschied zwischen var foo = function () {} und function foo() beim Definieren einer Funktion in JavaScript vorgestellt. Freunde, die sie benötigen, können darauf verweisen
Eines Tages, als ich schrieb Code, ich habe plötzlich diese Frage: Fassen wir eine Welle von
Das „Hebeverhalten“ von JavaScript-Funktions- und Variablendeklarationen zusammen
Einfach ausgedrückt, wenn wir anonyme Funktionen verwenden
var a = {}
Auf diese Weise wird die Variablendeklaration a nach der Kompilierung „vorgerückt“, ihre Zuweisung (d. h. a) wird jedoch nicht vorgerückt.
Das heißt, die anonyme Funktion wird erst 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 .
Wenn wir uns ein Beispiel ansehen
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'
dem von uns erwarteten Verhalten
var hereOrThere = function () { // function expression return 'here'; }; console.log(hereOrThere()); // alerts 'here' hereOrThere = function () { return 'there'; };
nach der Kompilierung dieses Programms entspricht es:
var hereOrThere;//申明前置了 hereOrThere = function() { // function expression return 'here'; }; console.log(hereOrThere()); // alerts 'here' hereOrThere = function() { return 'there'; };
Das Obige habe ich für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
Vue2.0-Methode zur Implementierung der Seitennavigations-Eingabeaufforderung
vue2.0 ändert den Stil entsprechend dem Statuswert Show Methode
So implementieren Sie eine Notizanwendung mit Vuex
Das obige ist der detaillierte Inhalt vonEine Einführung in den Unterschied zwischen var foo = function () {} und function foo() beim Definieren einer Funktion in JavaScript (ausführliches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!