Maison >interface Web >js tutoriel >Bugs rencontrés lors de l'utilisation de la portée de la variable js

Bugs rencontrés lors de l'utilisation de la portée de la variable js

php中世界最好的语言
php中世界最好的语言original
2018-05-24 15:57:131870parcourir
for (var i = 0; child && i < child.length; i++) {
            var obj = child[i];
            var kind = child[i].kind;
            var deiveId = child[i].id;
            if (kind == "4") {//分支1
                 // do sometjing
            }else{//分支2
                for(i in arr){
                   //do something
                }
            }

Le code ci-dessus crée un problème apparemment étrange, c'est-à-dire s'il est gentil ! Dans le cas de la branche 2 = 4, parfois la boucle for externe fera demi-tour, c'est-à-dire que la boucle la plus externe a évidemment atteint le dernier enfant. Après avoir exécuté la branche 2, la boucle for externe revient en arrière et s'exécute. encore.

Analyse des causes :
Je pense que les professionnels qui ne sont pas aussi mauvais que moi trouveront que le problème réside dans la variablei, où je ne deviendrai pas variable de niveau de bloc, mais le niveau fonction . Le changement de i dans la branche 2 entraînera le changement de la couche externe i, provoquant le retour en arrière de la boucle.
JS n'avait pas de portée au niveau du bloc avant ES6 et n'était divisé qu'en portée globale et portée au niveau de la fonction. Ici, je suis la portée au niveau de la fonction, et lorsque nous l'utilisons pour faire une boucle index , c'est en fait Il est destiné à être utilisé comme portée au niveau du bloc.

Solution

Si vous souhaitez obtenir l'effet de portée au niveau du bloc, vous pouvez utiliser le mot-clé let de la syntaxe ES6 :

for(let i=0;i<arr.length;i++){
}
Je crois que vous l'avez lu. Vous maîtrisez la méthode dans le cas de cet article. Pour un contenu plus passionnant, veuillez faire attention aux

autres articles liés au php chinois !

Lecture recommandée :

Résumé des styles CSS couramment utilisés

Explication détaillée de la différence entre l'utilisation de Component et PureComponent


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