Maison  >  Article  >  interface Web  >  Explication détaillée de la différence entre la traversée de tableaux javascript pour et pour les compétences in_javascript

Explication détaillée de la différence entre la traversée de tableaux javascript pour et pour les compétences in_javascript

WBOY
WBOYoriginal
2016-05-16 16:29:181476parcourir

Il existe deux façons de parcourir des tableaux en js

Copier le code Le code est le suivant :

var array=['a']
//Standard pour la boucle
pour(var i=1;i alerte(tableau[i])
>
//boucle foreach
pour(var i dans le tableau){
alerte(tableau[i])
>

Dans des circonstances normales, les résultats des deux méthodes ci-dessus de parcours de tableaux sont les mêmes. Parlons d’abord de la première différence entre les deux

Le i dans la boucle for standard est de type number, qui représente l'indice du tableau, mais le i dans la boucle foreach représente que la clé du tableau est de type string, car tout dans js est un objet. Essayez-le vous-même alert(typeof i); Cette différence est un problème mineur. Maintenant que j'ajoute le code suivant, les résultats d'exécution ci-dessus seront différents.

Copier le code Le code est le suivant :

//Tableau natif js étendu
Array.prototype.test=function()

>

Essayez-le et voyez ce que fait le code ci-dessus. Nous avons constaté que la boucle for standard boucle toujours réellement sur le tableau, mais à ce stade, la boucle foreach imprime la méthode de test que je viens d'écrire. C'est la plus grande différence entre for et foreach pour parcourir le tableau. Si nous utilisons foreach pour parcourir le tableau dans le projet, supposons qu'un jour quelqu'un étende accidentellement la classe Array native de js, ou introduise un framework js externe et étend également le natif. Tableau. . Vient ensuite le problème.

Deux autres suggestions

1. N'utilisez pas for in pour parcourir le tableau, utilisez le tableau de variables de boucle standard for (nous ne pouvons pas garantir si le js que nous présentons utilisera le prototype pour étendre le tableau natif)
2. Si vous souhaitez étendre les classes natives de js, n'utilisez pas de prototype

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