Heim  >  Artikel  >  Web-Frontend  >  Der Unterschied zwischen var foo = function () {} und function foo()

Der Unterschied zwischen var foo = function () {} und function foo()

php中世界最好的语言
php中世界最好的语言Original
2018-03-17 13:17:482183Durchsuche

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!

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