Maison > Article > interface Web > Résumé sur l'utilisation de var
En faisant le tutoriel MOOC JavaScript, j'ai rencontré quelques problèmes avec var.
L'un concerne le problème de la déclaration des variables dans les fonctions. On constate que le programme peut s'exécuter normalement, que la déclaration var (req1丶req2丶sumq) soit utilisée ou non. ou non. Le code est le suivant :
1 <script > 2 function app2(x,y) 3 { var sum,x,y; 4 sum = x * y; 5 return sum ; 6 } 7 req1 = app2(5,6); //var req1 = app2(5,6); 8 req2 = app2(2,3); //var req2 = app2(2,3); 9 sumq = req1 + req2; //var sumq = req1 + req2; 10 document.write("req1的值:"+req1+"<br/>");11 document.write("req2的值:"+req2+"<br/>");12 document.write(req1+"与"+req2+"和:"+sumq);13 </script>
J'étais un peu confus, alors j'ai cherché en ligne et lu quelques livres. "Javascript Language Essence" mentionné : L'utilisation directe de variables non déclarées est appelée Variables globales implicites . Cette méthode est à l'origine destinée à la commodité des débutants, intentionnellement afin que les variables n'aient pas besoin d'être déclarées avant utilisation. Cependant, oublier de déclarer des variables est devenu une erreur très courante. La stratégie de JavaScript consiste à créer des variables que vous oubliez de déclarer à l'avance comme des variables globales, mais cela peut rendre les bogues très difficiles à trouver. L'utilisation de variables globales doit donc être évitée.
Il existe une autre confusion liée à var, qui est également sur le MOOC. Le code est le suivant :
1 <!-- 要创建一个运行于无穷循环中的计数器,我们需要编写一个函数来调用其自身。在下面的代码, 2 点击Start按钮,从0开始计数;点击Stop按钮,停止计数。 --> 3 <!DOCTYPE HTML> 4 <html> 5 <head> 6 <meta charset="utf-8"> 7 <script type="text/javascript"> 8 var num=0; 9 var i; //不声明,不会显示错误。.10 function numCount(){11 document.getElementById('txt').value=num;12 num=num+1;13 i = setTimeout("numCount()",1000); //若为var i ...,则错误。14 }15 function stopCount() {16 clearTimeout(i);17 }18 </script>19 </head>20 <body>21 <form>22 <input type="text" id="txt" />23 <input type="button" value="Start" onClick="numCount()" />24 <input type="button" value="Stop" onClick="stopCount()" />25 </form>26 </body>27 </html>
Le code ci-dessus est correct et peut être un fonctionnement normal. Mais lorsque la 9ème ligne de code (var i;) est supprimée, le programme peut toujours s'exécuter normalement. Le problème est le même que celui mentionné ci-dessus : lorsqu'une variable non déclarée est utilisée directement, la variable deviendra une variable globale, donc elle s'exécutera. correctement. Mais lorsque le 13ème code devient :
var i = setTimeout("numCount()",1000);
, que la 9ème ligne de code soit supprimée ou non, le programme ne fonctionne pas correctement. En effet : Dans la portée de la fonction, les variables déclarées avec var sont des variables locales, et les variables déclarées sans var deviennent des variables globales. Donc, après l'avoir déclaré avec var, la variable i est une variable locale, elle provoquera donc une erreur de programme.
Également dans la portée globale, les variables définies à l'aide de var ne peuvent pas être supprimées et les variables définies sans var peuvent être supprimées. C'est-à-dire : à proprement parler, les variables globales implicites ne sont pas des variables réelles, mais des attributs de l'objet global, car les attributs peuvent être supprimés via delete, mais pas les variables.
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!