Heim >Web-Frontend >js-Tutorial >Warum sind meine globalen JavaScript-Variablen in Funktionen undefiniert?

Warum sind meine globalen JavaScript-Variablen in Funktionen undefiniert?

DDD
DDDOriginal
2024-12-04 22:53:12479Durchsuche

Why Are My Global JavaScript Variables Undefined Inside Functions?

Histing von JavaScript-Variablen: Das Geheimnis undefinierter globaler Variablen aufdecken

Bei der Arbeit mit JavaScript-Variablen kann es leicht zu überraschendem Verhalten kommen. Ein solcher Fall ist, wenn eine globale Variable innerhalb einer bestimmten Funktion einen undefinierten Wert zu haben scheint.

Beispiel:

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

Ausgabe:

undefined
20

Erklärung:

Das Verhalten stammt von JavaScript Variable Hoisting, das Variablen- und Funktionsdeklarationen automatisch an den Anfang des aktuellen Bereichs verschiebt. Das bedeutet:

  • Der globale Variablenwert wird an die Spitze der Testfunktion gehoben.
  • Am Punkt A gibt das Programm den Wert aus lokale Wertvariable, die noch nicht initialisiert wurde.
  • An Punkt B gibt das Programm den Wert korrekt aus der neu initialisierten lokalen Variablen.

Tatsächlich verhält sich der Code so, als ob er wie folgt geschrieben wäre:

var value;

function test() {
    console.log(value); // undefined
    value = 20;
    console.log(value); // 20
}

Randbemerkung:Funktionsdeklarationen ebenfalls einer Hebung unterzogen werden. Aus diesem Grund können Sie im Gegensatz zu Variablenzuweisungen eine Funktion aufrufen, bevor sie deklariert wird.

Fazit:

Bei der Arbeit mit JavaScript-Variablen sollte das Heben von Variablen in Betracht gezogen werden. Durch das Verständnis dieses Verhaltens können Entwickler unerwartete undefinierte Werte in ihrem Code vermeiden. Darüber hinaus können Ressourcen wie Ben Cherrys „JavaScript Scoping and Hoisting“ weitere Einblicke in diesen grundlegenden Aspekt von JavaScript liefern.

Das obige ist der detaillierte Inhalt vonWarum sind meine globalen JavaScript-Variablen in Funktionen 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