Heim >Web-Frontend >js-Tutorial >Warum gibt dieser JavaScript-Code „1' zurück?

Warum gibt dieser JavaScript-Code „1' zurück?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 08:34:101050Durchsuche

Why Does This JavaScript Code Return

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.

    Alarmiert das globale a, das den Wert 1 hat.
  1. Daher zeigt die Warnung „1“ an, da das in b verwendete a eine lokale Variable ist, die sich nicht auf die globale Variable auswirkt a.

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!

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