Javascript Function Scoping und Hoisting: Ein tieferer Einblick
Ben Cherrys Artikel über Javascript Scoping und Hoisting stellt die Konzepte des Function Hoisting und des Variablen-Scopings vor . Um ihre Auswirkungen besser zu verstehen, schauen wir uns ein faszinierendes Beispiel an, das er liefert:
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);
Führen Sie diesen Code aus und Sie werden feststellen, dass er „1“ ausgibt, was möglicherweise rätselhaft erscheint.
Das Hochziehen von Funktionen ist ein entscheidendes Konzept, um Funktionsdeklarationen an den Anfang ihres Gültigkeitsbereichs zu heben. Dies bedeutet, dass der obige Code effektiv wie folgt umgeschrieben wird:
function b() { function a() {} a = 10; return; }
Seltsamerweise funktioniert die Funktion innerhalb der Funktion, a(), ähnlich wie eine Variablendeklaration (var a = function () {};) . Bedenken Sie Folgendes:
var a = 1; function b() { var a = function () {}; a = 10; return; } b(); alert(a);
Beide Versionen liefern genau das gleiche Ergebnis.
Im Wesentlichen macht der Code Folgendes:
var a = 1; // Defines "a" in the global scope function b() { var a = function () {}; // Defines "a" in the local scope a = 10; // Overwrites the local variable "a" return; } b(); alert(a); // Alerts the global variable "a"
Der Schlüssel zum Erfolg ist, dass die Funktion Heben und Variable Scoping interagieren, um dieses Verhalten zu erzeugen. Die innere Funktion erstellt eine lokale Variable a, während die Funktionsdeklaration selbst die Funktion an die Spitze hebt. Dies führt letztendlich dazu, dass das global definierte a von Änderungen innerhalb der Funktion unberührt bleibt.
Das obige ist der detaillierte Inhalt vonWie wirkt sich das Hoisting und Scoping von JavaScript-Funktionen auf das Überschreiben von Variablen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!