J'ai toujours supposé que la mise en cache de la longueur d'un tableau en JavaScript est une bonne idée (surtout dans la condition d'un for
boucle) en raison de la cherté de calcul de la longueur d'un tableau.
Exemple
for (var i = 0; i < arr.length; i++) { }
// vs
for (var i = 0, arrLength = arr.length; i < arrLength; i++) { }
Cependant, j'ai pensé que peut-être l' length
propriété est mise à jour uniquement sur la création et la modification de la matrice. Par conséquent, la lecture, il ne devrait pas être trop cher une opération, par opposition à la lecture il est stocké dans une variable (par opposition à d'autres méthodes dans d'autres langues qui peuvent avoir besoin de chercher dans la mémoire de trouver la fin de quelque chose, par exemple, strlen()
en C).
J'ai deux questions. Je suis également intéressé par la façon dont cela fonctionne, donc merci de ne pas me frapper avec le prématuré d'optimisation de bâton.
Assumer les moteurs JavaScript dans les navigateurs.
- Est-il un avantage pour la mise en cache de l'
length
de la propriété d'un tableau en JavaScript? Est-il beaucoup plus impliqués dans la lecture d'une variable locale sur une propriété de l'objet? - Est l'
length
de la propriété tout simplement modifié sur la création et sur l'shift()
etpop()
type de méthodes que de ne pas renvoyer un nouveau tableau et sinon simplement stockées sous forme d'un nombre entier?