En JavaScript, var est utilisé pour déclarer des variables, mais cette syntaxe n'est pas strictement obligatoire. Dans de nombreux cas, on peut utiliser une variable directement sans la déclarer avec var.
Et ainsi de suite. Il y a un problème. Par exemple, dans une certaine ligne du code, je souhaite utiliser une variable déclarée x. Par conséquent, en raison de fautes de frappe ou d'orthographe, la variable est écrite sous la forme y. Le résultat est équivalent à un ". déclaration" implicite" d'une variable. y, dans le processus de programmation réel, ce genre d'erreur est parfois difficile à trouver.
De plus, aujourd'hui grâce à la présentation d'un collègue, j'ai pris connaissance d'un autre problème dans cette "déclaration implicite".
Lorsque vous faites cette déclaration "implicite" dans le contexte actuel, le moteur JavaScript va d'abord chercher dans le contexte courant si cette variable a déjà été déclarée. Sinon, allez dans le contexte précédent pour la rechercher. Si elle n'a pas été trouvée, nous déclarerons enfin cette variable sur la fenêtre !
Par exemple :
Le code est le suivant :
window. y = "hello"; function func(){ y = "OH, NO!!!"; } func(); alert(window.y); //#=> display "OH, NO!!!"
Lorsqu'une couche dans le contexte a une telle variable définie "implicitement", alors la variable de cette layer La variable sera modifiée sans générer de nouvelle variable sur la fenêtre. (Ce genre de bug est aussi assez gênant, surtout lorsqu'on encapsule du code plus complexe)
Par exemple :
Le code est le suivant :
var x = "window.x"; function a() { var x = "a's x"; var b = function() { var c = function() { //no var! x = "c's x:"; }; alert("before c run,the b.x:" + x); c(); alert("after c run, the b.x:" + x); }; alert("a.x is:" + x); b(); alert("after b function runed, the a.x is:" + x); }; alert("before a run, window.x:" + x); a(); alert("after a run, window.x:" + x);
Il y a les les couches suivantes :window, func a, func b, func c sont toujours imbriquées hiérarchiquement. window->a->b->c
window et a ont variable définie x, la variable n'est pas définie dans b, et l'une est déclarée "implicitement" dans c x, ce qui modifie finalement la valeur de la variable a.
N'oubliez pas qu'en JavaScript, lors de la déclaration d'une variable, vous devez ajouter var avant celle-ci.
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!