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

Warum ist meine globale Variable in einer JavaScript-Funktion undefiniert?

Susan Sarandon
Freigeben: 2024-12-03 15:50:14
Original
843 Leute haben es durchsucht

Why is my Global Variable Undefined Inside a JavaScript Function?

Überrascht von undefinierten globalen Variablen in JavaScript: Das Heben von Variablen verstehen

Das Verhalten, auf das Sie gestoßen sind, wenn eine globale Variable innerhalb einer Funktion zunächst undefiniert ist, kann auf das Heben von Variablen in JavaScript zurückgeführt werden Mechanismus. JavaScript hebt Variablendeklarationen automatisch an die Spitze ihres umschließenden Bereichs, auch wenn die tatsächliche Zuweisung von Werten später im Code erfolgt.

Im bereitgestellten Beispiel wird der globale Variablenwert mit einem Anfangswert von 10 deklariert. Allerdings wird innerhalb der Testfunktion auch eine lokale Variable mit demselben Namen (Wert) ohne zugewiesenen Wert deklariert (der standardmäßig undefiniert ist).

Die erste console.log-Anweisung in der Funktion versucht, auf den globalen Wert zuzugreifen, aber da der lokale Wert bereits angehoben wurde, hat er Vorrang. Infolgedessen wird beim ersten Aufruf undefiniert ausgegeben. Anschließend zeigt die zweite console.log-Anweisung innerhalb der Funktion den Wert an, der der lokalen Wertvariablen (20) zugewiesen ist.

Dieses Hebephänomen gilt sowohl für Variablen als auch für Funktionen in ihrem aktuellen Ausführungskontext. Es ist wichtig zu verstehen, dass nur die Deklaration, nicht die Zuordnung, erhoben wird. Dies bedeutet, dass auf Variablen in ihrem gesamten Gültigkeitsbereich zugegriffen werden kann, ihnen jedoch möglicherweise kein Wert zugewiesen wird, bis der Code die Zuweisungsanweisung erreicht.

Betrachten Sie beispielsweise den folgenden Codeausschnitt:

var test = 'start';

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

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

Überraschenderweise gab dieser Code „start“ aus, obwohl das Ende der Funktion scheinbar den Wert der Testvariablen änderte. Dies liegt daran, dass innerhalb der Endfunktion eine neue lokale Variablendeklaration Vorrang hat und die globale Variable unverändert bleibt.

Während das Heben von Variablen den Code vereinfachen kann, ist es wichtig, sich seiner Auswirkungen bewusst zu sein, um unbeabsichtigtes Verhalten zu vermeiden. Die richtige Festlegung des Variablenbereichs und das vollständige Verständnis des Hebemechanismus können dazu beitragen, die Codestruktur beizubehalten und potenzielle Fehler zu verhindern.

Das obige ist der detaillierte Inhalt vonWarum ist meine globale Variable in einer JavaScript-Funktion 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