Skip to content

Latest commit

 

History

History
46 lines (29 loc) · 2.39 KB

File metadata and controls

46 lines (29 loc) · 2.39 KB

Tableaux: iteration et propriétés

Bien que les tableaux soient des objets en JavaScript, il n'y a pas de bonnes raisons d'utiliser la boucle for in. En fait, il y a un certain nombre de bonnes raisons contre l'utilisation de for in sur les tableaux.

Remarque: Les tableaux JavaScript ne sont pas associatifs. JavaScript n'offre que les objets pour associer des clés à des valeurs. Contrairement aux tableaux associatifs, les objets ne préservent pas l'ordre.

La boucle for in énumère toutes les propriétés qui sont sur la chaîne de prototypes, et le seul moyen d'exclure ces propriétés consiste à utiliser hasOwnProperty, par conséquent la boucle for in est vingt fois plus lente qu'une boucle for classique.

Itération

Pour itérer sur les tableaux de façon performante, il est préférable d'utiliser la boucle for classique.

var list = [1, 2, 3, 4, 5, ...... 100000000];
for(var i = 0, l = list.length; i < l; i++) {
    console.log(list[i]);
}

Notez l'optimization supplémentaire dans l'exemple ci-dessus: la longueur du tableau est mise en mémoire "cached" via l = list.length.

La propriété length est définie sur le tableau lui-même, mais la rechercher à chaque itération de la boucle à un coût. Bien que les moteurs JavaScript récents peuvent appliquer l'optimisation, il n'y a aucun moyen de savoir si le code s'exécutera sur un de ces nouveaux moteurs.

En effet, mettre la longueur du tableau en mémoire cache peut doubler la vitesse d'execution de la boucle.

La propriété length

Le getter de la propriété length (longueur) renvoie simplement le nombre d'éléments contenus dans le tableau, mais le setter peut être utilisé pour tronquer le tableau.

var arr = [1, 2, 3, 4, 5, 6];
arr.length = 3;
arr; // [1, 2, 3]

arr.length = 6;
arr.push(4);
arr; // [1, 2, 3, undefined, undefined, undefined, 4]

Attribuer une longueur inférieure tronque le tableau. Accroître la longueur crée un tableau clairsemé.

En conclusion

Pour de meilleures performances, il est recommandé de toujours utiliser la boucle for classique et de mettre en mémoire la propriété length. L'utilisation de la boucle for in sur un tableau est un signe de code mal écrit, de mauvaise performance, et sujet à des bogues.