Heim > Web-Frontend > js-Tutorial > Warum ist meine globale Variable in JavaScript undefiniert?

Warum ist meine globale Variable in JavaScript undefiniert?

Barbara Streisand
Freigeben: 2024-12-07 17:06:12
Original
546 Leute haben es durchsucht

Why is My Global Variable Undefined in JavaScript?

Überrascht, dass die globale Variable in JavaScript einen undefinierten Wert hat?

Sind Sie jemals auf eine Situation gestoßen, in der eine globale Variable unerwartet einen undefinierten Wert in JavaScript zurückgibt? Betrachten Sie dieses verwirrende Beispiel:

var value = 10;

function test() {
    //A
    console.log(value);
    var value = 20;

    //B
    console.log(value);
}

test();
Nach dem Login kopieren

Die Ausgabe dieses Codes überrascht viele:

undefined
20
Nach dem Login kopieren

Warum die globale Variable undefiniert ist

Die Die Ursache dieses Rätsels liegt in einem grundlegenden Konzept von JavaScript, das als variables Heben bekannt ist. Wenn die JavaScript-Engine interpretiert Code durchsucht es zunächst den gesamten Codeblock und „hievt“ alle Variablendeklarationen nach oben. Es werden jedoch nur die Deklarationen gehisst, nicht die Zuweisung.

Im obigen Beispiel wird bei der Ausführung des Funktionstests zu keinem Zeitpunkt auf den globalen Variablenwert zugegriffen. Stattdessen wird ein neuer lokaler Variablenwert deklariert und zugewiesen. Diese lokale Variable überschattet die globale Variable, was zu einem undefinierten Wert für den Aufruf von console.log(value) an Punkt A führt.

Erklärung

Um dies weiter zu veranschaulichen: Schreiben wir den Code so um, als ob das Hochziehen stattgefunden hätte:

// Variable declarations hoisted to the top of the function
var value = undefined;
var value = 20;

function test() {
    //A
    console.log(value);

    //B
    console.log(value);
}
Nach dem Login kopieren

Jetzt ist klar, warum der erste console.log-Aufruf zurückkehrt undefiniert. Der lokale Variablenwert wurde noch nicht zugewiesen.

Ein weiteres Beispiel

Um das Konzept des Hebens hervorzuheben, betrachten Sie den folgenden Code:

var test = 'start';

function end() {
    test = 'end';
    var test = 'local';
}

end();
alert(test);
Nach dem Login kopieren

Dieser Code alarmiert den Wert „Start“, nicht „Ende“ oder „Lokal“. Dies liegt daran, dass der Variablentest an den Anfang der Endfunktion gehoben wurde und die globale Variable überschattet.

Funktionen werden ebenfalls gehoben

Das Hochziehen gilt nicht nur für Variablen, sondern auch für Variablen auch auf Funktionen. Der folgende Code veranschaulicht dies:

test("Won't work!");

test = function(text) { alert(text); }
Nach dem Login kopieren

Dieser Code löst einen Referenzfehler aus, da beim Aufruf von test("Funktioniert nicht!") die Testvariable deklariert, aber nicht der Funktion zugewiesen wurde. Nur die richtige Funktionsdeklarationssyntax gewährleistet ein vollständiges Hochziehen.

Das obige ist der detaillierte Inhalt vonWarum ist meine globale Variable in JavaScript undefiniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage