Maison > Article > interface Web > Choses à noter lors de l'utilisation de boucles for en javascript
L'utilisation d'une boucle est pratique si vous souhaitez exécuter le même code encore et encore, avec des valeurs différentes à chaque fois.
Souvent, nous utilisons des boucles for, et le département des boucles for boucle souvent sur un tableau. Plusieurs fois, nous l'écrivons comme ceci :
// 次佳的循环 for (var i = 0; i < myarray.length; i++) { // 使用myarray[i]做点什么}
Codez comme celui-ci Bien qu'il n'y ait pas de gros problème. , chaque boucle obtiendra la longueur du tableau, ce qui réduira votre code, surtout lorsque myarray n'est pas un tableau, mais un objet HTMLCollection.
Regardez à nouveau le code suivant :
for (var i = 0, max = myarray.length; i < max; i++) { // 使用myarray[i]做点什么}
Ce code n'obtiendra la longueur du tableau qu'une seule fois, ce qui améliore la qualité du code
est accompagné ; par une seule forme var, vous pouvez retirer les variables de la boucle, comme ceci :
function looper() { var i = 0, max, myarray = []; // ... for (i = 0, max = myarray.length; i < max; i++) { // 使用myarray[i]做点什么 }}
Résumé des problèmes lorsque JavaScript utilise des boucles for
La discussion sur ce problème est venue à l'origine de l'e-mail interne de l'entreprise, je viens d'enregistrer la discussion sur ce problème.
Lors de la localisation du problème, certaines équipes de projet ont constaté que lors de l'utilisation de « for(x in array) », x apparaissait de manière inattendue dans la valeur du navigateur IE.
Plus précisément, si la méthode Array.prototype.indexOf est personnalisée (par exemple, en raison d'une certaine pollution du prototype), cela peut être dû au fait que l'ancienne version du navigateur IE ne prend pas en charge le array.indexOf. Et les développeurs souhaitent l'utiliser, donc un tel navigateur peut avoir le problème suivant :
Array.prototype.indexOf = function(){...}; var arr = [1, 2];for (x in arr) console.log(x);
//affichera
1 2function(){…}
En d'autres termes, la méthode indexOf est affichée.
La solution est simple, soit n'ajoutez pas cette méthode, soit utilisez une boucle comme "for (i=0; i < array.length; i++)" etc.
Mais quelle est la nature du problème ? Certaines personnes pensent que cela peut être dû au fait que l'utilisation de for(x in obj) consiste en fait à traverser un objet, et que l'implémentation de array est en fait la même que celle des objets ordinaires, sauf que key est C'est juste une valeur donnée :
{0:"something", 1:"something else"}
Il a également été mentionné dans une question et réponse stackoverflow qu'il y a une différence entre utiliser for...in et for(;;) lors de la traversée un tableau. Le sens du premier est d'énumérer des objets, il y a deux problèmes :
L'ordre d'énumération ne peut pas être garanti ;
les attributs hérités sont également énumérés ; 🎜> n'est pas correct pour
Array.prototype Concernant la prise en charge de .forEach, il ressort clairement de ce tableau que IE8 et les versions antérieures ne peuvent pas être prises en charge avec précision : Il existe également une compatibilité avec la méthode forEach Elaboration du sexe. En fait, les principaux frameworks JavaScript (tels que jQuery, Underscore, Prototype, etc.) ont tous des implémentations sûres et générales de fonctionnalités pour chaque.
Il est également mentionné dans le chapitre for in de JSLint que l'instruction for in permet de parcourir les noms d'attributs de l'objet, mais elle traversera également les attributs hérités de la chaîne de prototypes, qui dans de nombreux cas provoquera des imprévus autres que des erreurs. Il existe une solution grossière :
Quelqu'un a également mentionné le problème lors de l'utilisation defor (name in object) { if (object.hasOwnProperty(name)) { .... } }for(var i=0;i
for(let i =0; i < a.length; i++)Ce qui précède représente l'intégralité du contenu de cet article sur les problèmes auxquels il convient de prêter attention lors de l'utilisation de boucles for en javascript - avec un résumé des questions, j'espère que cela sera utile pour les travaux futurs et. étude, et bienvenue à tous les initiés de l'industrie qui ont fait des critiques et des suggestions.
for-in loop: Only for iterating over keys in an object/map/hash
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!