La propriété length n'est pas calculée à chaque appel, mais la dernière version sera plus rapide lorsque vous mettrez en cache la recherche de propriété. Même avec les implémentations JS les plus récentes (V8, TraceMonkey, SquirrelFish Extreme) qui utilisent une mise en cache de propriétés avancée (par exemple SmallTalk era;)), la recherche de propriétés est toujours au moins une branche conditionnelle supplémentaire de plus que votre seconde version.
Array.length n'est cependant pas constant car les tableaux JS sont mutables, donc push, pop, array[array.length]=0, etc
peut tous le changer.
Il existe d'autres concepts comme les DOM NodeList
que vous obtenez à partir d'appels comme document.getElementsBySelector
qui devraient être actifs, auquel cas la longueur peut être recalculée pendant que vous itérez. Mais si la longueur est recalculée, il y a de fortes chances qu'elle ait également changé, donc la mise en cache manuelle de la sortie peut ne pas être valide.
La différence entre les deux approches est négligeable pour un tableau. Cela ne devient significatif qu'en traitant avec le DOM. – AnthonyWJones