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)

Eine Einführung in den Unterschied zwischen var foo = function () {} und function foo() beim Definieren einer Funktion in JavaScript (ausführliches Tutorial)

亚连
亚连Original
2018-06-02 11:59:511618Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn