Bien que les tableaux soient des objets en JavaScript, il n'est pas recommandé d'utiliser A pour en boucle pour traverser un tableau. En fait, il existe de nombreuses raisons de nous empêcher d'utiliser A pour en boucle pour les tableaux.
Parce que la boucle FOR IN énumérera toutes les propriétés de la chaîne prototype, et la seule façon de l'empêcher est d'utiliser HasownProperty pour juger, ce qui sera beaucoup plus lent que la normale pour la boucle.
Traversée
Pour que des performances optimales traversent un tableau, la meilleure façon est d'utiliser le classique pour la boucle.
La copie de code est la suivante:
var list = [1, 2, 3, 4, 5, ...... 100000000];
pour (var i = 0, l = list.length; i <l; i ++) {
console.log (list [i]);
}
Il y a une astuce supplémentaire ici, qui est de mettre en cache la longueur du tableau par l = list.length.
Bien que la longueur de la propriété soit définie dans le tableau lui-même, il y a toujours des frais généraux à chaque traversée de la boucle. Bien que les derniers moteurs JavaScript aient peut-être effectué des optimisations de performances pour cette situation, vous ne pouvez pas garantir que votre code JavaScript s'exécutera toujours sur ce navigateur.
En fait, les boucles sans longueur de cache sont beaucoup plus lentes que les boucles avec des longueurs de cache.
attribut de longueur
Bien que l'attribut de longueur renvoie uniquement le nombre d'éléments dans le tableau via la méthode Getter, le tableau peut être tronqué par la méthode du secteur.
La copie de code est la suivante:
var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]
foo.length = 6;
foo.push (4);
foo; // [1, 2, 3, non définis, non définis, non définis, 4]
L'attribution d'un nombre plus petit à l'attribut de longueur tronquera le tableau et si elle est attribuée un nombre plus grand, elle ne tronquera pas le tableau.
Résumer
Pour des performances optimales, il est recommandé d'utiliser une boucle pour une boucle pour une boucle FOR lors de la mise en cache de l'attribut de longueur.
Il existe également des objets de tableau qui n'ont pas de méthode, seulement une longueur d'attribut unique. Les objets de chaîne ont des méthodes de longueur ~~