Histing von JavaScript-Variablen: Erkundung undefinierter globaler Werte
Dieser Artikel untersucht das überraschende Verhalten globaler Variablen in JavaScript, insbesondere wenn dies der Fall zu sein scheint undefinierte Werte innerhalb von Funktionen.
Die Fall:
Im folgenden Beispiel wird der Wert der globalen Variablen auf 10 initialisiert. Wenn jedoch innerhalb der Testfunktion darauf zugegriffen wird, wird undefiniert protokolliert.
var value = 10; function test() { //A console.log(value); var value = 20; //B console.log(value); } test();
Ausgabe :
undefined 20
Heben in JavaScript:
Das Phänomen Hinter diesem Verhalten steckt das sogenannte JavaScript-Variablenheben. Es schreibt vor, dass alle innerhalb einer Funktion deklarierten Variablen „angehoben“ oder an den Anfang des Funktionsbereichs verschoben werden, auch wenn sie nach ihrer Verwendung deklariert werden.
Im obigen Beispiel wird die Wertvariable an die Spitze gehoben oben in der Testfunktion. Allerdings wird nur seine Deklaration aufgehoben, nicht aber seine Zuweisung (Initialisierung). Wenn also console.log(value) aufgerufen wird, greift es auf die angehobene, aber nicht zugewiesene Variable zu, was zu undefiniert führt.
Erklärung:
Dieses Verhalten kann durch verstanden werden der entsprechende Code:
var value; // Global function test() { console.log(value); // Accessing the hoisted but undefined value value = 20; // Local assignment console.log(value); // Accessing the locally assigned value }
Randbemerkung: Heben von Funktionen:
Das Heben gilt auch für Funktionsdeklarationen. Wenn eine Funktion aufgerufen wird, bevor sie deklariert wird, wird sie trotzdem ausgeführt, auch wenn sie noch nicht ihrem Bezeichner zugewiesen wurde.
Zum Beispiel:
test("Won't work!"); // Error test = function(text) { alert(text); }; // Function assignment
Der erste Aufruf zum Testen schlägt fehl, da die Funktion zu diesem Zeitpunkt noch nicht deklariert ist. Der zweite Aufruf ist jedoch erfolgreich, da die Funktion nach dem ersten Aufruf angehoben und zugewiesen wird.
Fazit:
Der Hebemechanismus von JavaScript kann zu unerwarteten Ergebnissen führen, insbesondere beim Zugriff globale Variablen innerhalb von Funktionen. Das Verständnis der Nuancen des Hebens ist entscheidend für das Schreiben von robustem und fehlerfreiem JavaScript-Code.
Das obige ist der detaillierte Inhalt vonWarum erscheint meine globale JavaScript-Variable innerhalb einer Funktion undefiniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!