Maison  >  Article  >  interface Web  >  Une brève analyse de quatre manières courantes d'écrire des déclarations Javascript de variables de boucle_Connaissances de base

Une brève analyse de quatre manières courantes d'écrire des déclarations Javascript de variables de boucle_Connaissances de base

WBOY
WBOYoriginal
2016-05-16 15:36:381126parcourir

Où doit être placée la déclaration des variables de boucle en Javascript ?

Habitude 1 : Utiliser directement sans déclarer

function loop(arr) { 
 for (i = 0; i < arr.length; i++) { 
  // do something 
 } 
} 

Une habitude d'utilisation très dangereuse. Généralement, la variable de boucle deviendra un attribut sur l'objet window et sera utilisée globalement, ce qui est très susceptible d'affecter l'implémentation logique normale du programme.
Il est important de mentionner qu'en mode strict, une affectation directe sans déclarer de variable lèvera directement une exception. Cela aurait dû être fait depuis longtemps ! Citant un passage de l'annexe C de la norme ecma-262 :
"L'affectation à un identifiant non déclaré ou à une référence autrement insoluble ne crée pas de propriété dans l'objet global. Lorsqu'une affectation simple se produit dans le code en mode strict, son LeftHandSide ne doit pas être évalué comme une référence insoluble. Si c'est le cas, une exception ReferenceError est levée (6.2 .3.2)."
En d’autres termes, si une variable non déclarée est à nouveau utilisée, une exception ReferenceError sera levée.

Habitude 2 : placez-la dans le bloc d'instructions initial de la boucle for et déclarez

à plusieurs reprises
function loop(arr) { 
 for (var i = 0; i < arr.length; i++ ){ 
  // do someting 
 } 
 // console.log(i); 
 for (var i = 0; i < arr.length; i++ ){ 
  // do something else 
 } 
} 

Cette méthode semble être la plus sûre et la plus standardisée. De nombreux étudiants qui passent du C et de Java au développement front-end préfèrent cette façon d'écrire. En fait, cela peut être dû à une mauvaise compréhension d'un concept important en Javascript : Portée. Contrairement à C et Java, Javascript n'a pas de véritable portée au niveau du bloc. C'est-à-dire qu'après la fin de la première boucle, console.log(i) n'imprimera pas non défini et ne lancera pas d'exception ReferenceError, mais sera imprimé normalement. longueur d'arr.
Bien sûr, bien que cette façon d'écrire n'ait pas grand-chose d'autre que d'être belle, elle est compatible depuis longtemps et ne viole aucune spécification - la norme ecma n'interdit pas les déclarations répétées de la même variable dans une certaine portée.

Habitude 3 : Définir de manière centralisée

en haut de la fonction avec d'autres variables
function loop(arr) { 
 var var1; 
 var var2; 
 var i; 
 
 for (i = 0; i < arr.length; i++) { 
  // do something 
 } 
} 

Cette méthode de définition de variable de type c89 est presque impeccable en Javascript. Elle ne provoquera pas de malentendu selon lequel Javascript prend en charge la portée au niveau du bloc, ni ne polluera la portée globale, ni ne violera les normes et spécifications. L'inconvénient principal est que la déclaration. de la variable de boucle et du corps de la boucle peuvent être très éloignés. Sans recourir à plus de code, il ne semble pas y avoir de meilleure solution à ce problème que d'attendre que les principaux fabricants de navigateurs grand public implémentent le mot-clé let dans ECMAScript 6.

Habitude 4 : Encapsuler le code de la boucle dans IIFE

function loop(arr) { 
 (function () { 
  for (var i = 0; i < arr.length; i++) { 
   // do something 
  } 
 })(); 
} 

La dernière habitude est IIFE (Immediately-Invoked Function Expression), qui est familière aux programmeurs front-end, ce qui signifie exécuter la fonction immédiatement. Les principaux inconvénients de cette méthode sont qu'elle est relativement difficile à écrire et entraîne une perte de performances inutile (très faible), mais elle fonctionne bien en termes de compatibilité et de conformité avec diverses normes. Les développeurs peuvent adopter cette approche si cela ne pose pas trop de problèmes.

Ce qui précède est une brève introduction et analyse des habitudes d'écriture de quatre définitions de variables de boucle courantes en Javascript. Chacune a ses propres avantages et inconvénients. Les lecteurs peuvent choisir la meilleure en fonction de leurs propres besoins.

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