Heim >Web-Frontend >js-Tutorial >Warum erscheint meine globale JavaScript-Variable innerhalb einer Funktion undefiniert?

Warum erscheint meine globale JavaScript-Variable innerhalb einer Funktion undefiniert?

Barbara Streisand
Barbara StreisandOriginal
2024-12-09 08:27:07831Durchsuche

Why Does My Global JavaScript Variable Appear Undefined Inside a Function?

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!

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