Maison  >  Article  >  interface Web  >  À quoi sert la portée au niveau du bloc Javascript ?

À quoi sert la portée au niveau du bloc Javascript ?

青灯夜游
青灯夜游original
2022-01-18 12:03:422842parcourir

Le rôle de la portée au niveau du bloc : résoudre les conflits de noms causés par un trop grand nombre de variables et de fonctions globales. JavaScript fermera les yeux sur les déclarations répétées, provoquant des erreurs dans les résultats d'exécution. La portée au niveau du bloc peut résoudre ce problème, permettant à chaque développeur d'utiliser ses propres variables sans se soucier de gâcher la portée globale.

À quoi sert la portée au niveau du bloc Javascript ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

Qu'est-ce que la portée au niveau du bloc ?

Tout ensemble d'instructions entre accolades ({ et }) appartient à un bloc. Toutes les variables qui y sont définies sont invisibles en dehors du bloc de code, comme for , while, if

.

et JavaScript n'a pas de portée au niveau du bloc (avant la sortie de la norme es6, JavaScript n'avait pas de portée au niveau du bloc), c'est-à-dire que la définition d'une variable dans le bloc de code JavaScript peut toujours être utilisée en dehors du bloc de code. variable, par exemple :

<script type="text/javascript">  
   var i=1;  
     if(i==1){  
        var b=2;  
     }  
   alert(b);//输出2  

   function outputNumbers(count){
       for(vari=0;i<count;i++){
           alert(i);
       }
           alert(i); //计数
    } 
</script>

Dans des langages tels que Java et C++, la variable i ne sera définie que dans le bloc d'instructions de la boucle for. Une fois la boucle terminée, la variable i sera détruite. Mais en JavaScript, la variable i est définie dans l'objet actif de outputNumbers(), elle est donc accessible n'importe où dans la fonction à partir du moment où elle est définie.

Pourquoi devrions-nous implémenter la portée du bloc en JavaScript et à quoi sert-elle ?

La portée au niveau du bloc peut résoudre les conflits de noms causés par un trop grand nombre de variables et de fonctions globales, car JavaScript fermera les yeux sur les déclarations répétées (cependant, il effectuera l'initialisation des variables dans les déclarations suivantes), ce qui entraînera des résultats d'exécution incorrects, et vous Il faudra probablement beaucoup d'efforts pour détecter cette erreur.

Dans une grande application écrite par de nombreux développeurs, l'utilisation de portées privées permet à chaque développeur d'utiliser ses propres variables sans se soucier de gâcher la portée globale.

Comment implémenter la portée au niveau du bloc en JavaScript

Bien qu'il n'y ait pas de portée au niveau du bloc dans js, les fermetures/fonctions anonymes peuvent être utilisées pour imiter la portée au niveau du bloc.

La syntaxe d'une fonction anonyme dans une portée au niveau du bloc (souvent appelée portée privée) est la suivante :

(function(){

  //这里是块级作用域

})();

Le code ci-dessus définit et appelle immédiatement une fonction anonyme. Mettre une déclaration de fonction entre parenthèses indique qu’il s’agit en fait d’une expression de fonction. Une autre paire de parenthèses qui le suit appellera immédiatement cette fonction.

Un exemple d'utilisation de fonctions anonymes pour implémenter une portée au niveau du bloc en JavaScript

function outputNumbers(count){
   (function(){
      for(var i=0;i<count;i++){
          alert(i);
         }
        })();
    alert(i); //导致错误!
   }

Dans l'exemple, toutes les variables définies dans la fonction anonyme seront détruites à la fin de l'exécution. Par conséquent, la variable i ne peut être utilisée que dans la boucle et est détruite après utilisation. Le nombre de variables est accessible dans la portée privée car cette fonction anonyme est une fermeture, qui peut accéder à toutes les variables dans la portée conteneur.

Quand pouvez-vous utiliser la portée privée

Peu importe où vous êtes, tant que vous avez temporairement besoin de certaines variables, vous pouvez utiliser la portée privée

[Recommandations associées : Tutoriel d'apprentissage Javascript]

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