Maison >interface Web >js tutoriel >Pourquoi ma variable JavaScript globale apparaît-elle non définie dans une fonction ?

Pourquoi ma variable JavaScript globale apparaît-elle non définie dans une fonction ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 08:27:07825parcourir

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

Histing de variables JavaScript : exploration de valeurs globales non définies

Cet article explore le comportement surprenant des variables globales en JavaScript, en particulier lorsqu'elles semblent avoir valeurs non définies dans les fonctions.

Le Cas :

Dans l'exemple ci-dessous, la valeur de la variable globale est initialisée à 10. Cependant, lorsqu'on y accède dans la fonction de test, elle enregistre une valeur non définie.

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

    //B
    console.log(value);
}
test();

Sortie :

undefined
20

Levage en JavaScript:

Le Le phénomène derrière ce comportement est connu sous le nom de levage de variables JavaScript. Il impose que toutes les variables déclarées dans une fonction soient « hissées » ou déplacées vers le haut de la portée de la fonction, même si elles sont déclarées après leur utilisation.

Dans l'exemple ci-dessus, la variable de valeur est hissée au en haut de la fonction de test. Cependant, seule sa déclaration est levée, et non son affectation (initialisation). Ainsi, lorsque console.log(value) est appelé, il accède à la variable hissée mais non attribuée, ce qui donne un résultat indéfini.

Explication :

Ce comportement peut être compris à travers le code équivalent :

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
}

Remarque : Levage de Fonctions :

Le levage s'applique également aux déclarations de fonctions. Si une fonction est appelée avant d'être déclarée, elle s'exécutera quand même, même si son identifiant n'a pas encore été attribué.

Par exemple :

test("Won't work!"); // Error

test = function(text) { alert(text); }; // Function assignment

Le premier appel à tester échoue car la fonction n’est pas déclarée à ce stade. Cependant, le deuxième appel réussit car la fonction est hissée et attribuée après le premier appel.

Conclusion :

Le mécanisme de levage de JavaScript peut conduire à des résultats inattendus, en particulier lors de l'accès variables globales dans les fonctions. Comprendre les nuances du levage est crucial pour écrire un code JavaScript robuste et sans erreur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn