Maison > interface Web > js tutoriel > Pourquoi ma variable globale n'est-elle pas définie dans une fonction JavaScript ?

Pourquoi ma variable globale n'est-elle pas définie dans une fonction JavaScript ?

Susan Sarandon
Libérer: 2024-12-03 15:50:14
original
827 Les gens l'ont consulté

Why is my Global Variable Undefined Inside a JavaScript Function?

Surpris par les variables globales non définies en JavaScript : comprendre le levage de variables

Le comportement que vous avez rencontré lorsqu'une variable globale est initialement indéfinie dans une fonction peut être attribué au levage de variables de JavaScript mécanisme. JavaScript élève automatiquement les déclarations de variables en haut de leur portée, même si l'affectation réelle des valeurs se produit plus tard dans le code.

Dans l'exemple fourni, la valeur de la variable globale est déclarée avec une valeur initiale de 10. Cependant, dans la fonction de test, une variable locale portant le même nom (valeur) est également déclarée sans valeur attribuée (qui est par défaut non définie).

La première instruction console.log de la fonction tente d'accéder la valeur globale, mais comme la valeur locale a déjà été hissée, elle est prioritaire. Par conséquent, le premier appel s'imprime comme indéfini. Par la suite, la deuxième instruction console.log au sein de la fonction affiche la valeur attribuée à la variable de valeur locale (20).

Ce phénomène de levage s'applique à la fois aux variables et aux fonctions dans leur contexte d'exécution actuel. Il est essentiel de comprendre que seule la déclaration, et non l'affectation, est levée. Cela signifie que les variables sont accessibles dans toute leur portée, mais qu'elles peuvent ne pas avoir de valeur assignée jusqu'à ce que le code atteigne l'instruction d'affectation.

Par exemple, considérons l'extrait de code suivant :

var test = 'start';

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

end();
alert(test);
Copier après la connexion

Étonnamment, ce code afficherait start, bien que la fonction end modifie apparemment la valeur de la variable de test. En effet, dans la fonction de fin, une nouvelle déclaration de variable locale est prioritaire et la variable globale reste inchangée.

Bien que le levage de variable puisse simplifier le code, il est important d'être conscient de ses implications pour éviter un comportement involontaire. Une définition correcte de la portée des variables et une compréhension complète du mécanisme de levage peuvent aider à maintenir la structure du code et à prévenir les erreurs potentielles.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal