Heim >Web-Frontend >js-Tutorial >Warum gibt dieser JavaScript-Code „1' zurück?
Scoping und Hoisting von Javascript-Funktionen: Das Geheimnis lüften
Im Bereich JavaScript ist das Verständnis des Scopings und Hoistings von Funktionen von entscheidender Bedeutung, um komplexen Code zu entschlüsseln . Schauen wir uns ein Beispiel an, das die Frage aufgeworfen hat: „Warum gibt dieser Code ‚1‘ zurück?“ ist ein merkwürdiger Mechanismus, der Funktionsdeklarationen an die Spitze ihres Gültigkeitsbereichs bringt. In unserem Beispiel wird die Funktion b in den globalen Geltungsbereich gehoben und in folgendes umgewandelt:
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);
Variablenbereich: Auf den Geltungsbereich beschränkt
Lassen Sie uns nun loslegen Licht auf den variablen Umfang. In unserem Code wird a mit var im globalen Gültigkeitsbereich deklariert und dann innerhalb von b neu definiert. Wenn eine Variable innerhalb einer Funktion deklariert wird, ist sie nur innerhalb des Gültigkeitsbereichs dieser Funktion zugänglich.
function b() { function a() {} a = 10; return; }In unserem Fall ist die in b neu definierte Variable a lokal für die Funktion. Somit bleibt das ursprüngliche globale a unberührt.
Das missverstandene Verhalten: Ein tieferer Einblick
Auf den ersten Blick könnte die Deklarationsfunktion a() {} wie a erscheinen Funktionsdeklaration. Tatsächlich entspricht es jedoch var a = function() {}; und definiert ein funktionsähnliches Objekt. Das bedeutet, dass die Funktion a() {} keine Funktion mit dem Namen a erstellt, sondern die vorhandene Variable a mit einer neuen Funktion neu zuordnet.Hoisting und Scoping vereinen
Durch die Kombination von Function-Hoisting und Variable-Scoping führt unser Code im Wesentlichen Folgendes aus:Hebt b ins Globale Gültigkeitsbereich.Erstellt eine lokale Variable a innerhalb von b.
Weist das globale a auf 10 um.
Das obige ist der detaillierte Inhalt vonWarum gibt dieser JavaScript-Code „1' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!