Heim > Artikel > Web-Frontend > Warum können Sie JavaScript-Funktionen aufrufen, bevor sie definiert sind?
Warum können wir Funktionen vor ihrer Deklaration in JavaScript aufrufen?
In JavaScript Es tritt ein rätselhaftes Phänomen auf, bei dem Funktionen aufgerufen werden können, noch bevor sie formal definiert sind. Dieses Verhalten wird als Function Hoisting bezeichnet.
Hoisting erklärt
Hoisting trennt die Deklaration einer Funktion von ihrer Ausführung. Funktionsdeklarationen werden während der Kompilierungsphase verarbeitet und ihre Bezeichner werden an den globalen Kontext oder den Bereich gebunden, in dem sie definiert sind. Dies bedeutet, dass Funktionen referenziert und aufgerufen werden können, noch bevor sie explizit im Skript definiert werden.
Beachten Sie den folgenden Code:
<code class="javascript">function fooCheck() { alert(internalFoo()); // Invoking internalFoo() before its definition return internalFoo(); // Same here function internalFoo() { return true; } // Function definition comes later } fooCheck();</code>
In diesem Code wird internalFoo() zuvor aufgerufen seine Definition. Überraschenderweise funktioniert es, weil beim Hochziehen die Funktionsdeklaration an die Spitze des Gültigkeitsbereichs gehoben wird, sodass ihre Kennung im gesamten Skript als Referenz verfügbar ist.
Funktionsdeklaration vs. Ausdruck
Dieses Verhalten gilt nur für Funktionsdeklarationen. Funktionsausdrücke, wie etwa anonyme Funktionen, die mit dem Schlüsselwort var definiert werden, weisen nicht das gleiche Hebeverhalten auf. Wenn wir den obigen Code ändern, um einen Funktionsausdruck zu verwenden, bricht das Skript ab:
<code class="javascript">var internalFoo = function () { return true; };</code>
Fazit
Das Heben von Funktionen ist ein grundlegender Aspekt von JavaScript, der sein kann zunächst verwirrend. Mit diesem Verständnis können Sie nun die Komplexität der asynchronen Programmierung bewältigen und einen effizienten Codefluss aufrechterhalten.
Das obige ist der detaillierte Inhalt vonWarum können Sie JavaScript-Funktionen aufrufen, bevor sie definiert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!