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);
É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!