Bonjour,
Je suis toujours en quête de vraiment optimiser mon code et en faisant des tests, je me suis rendu compte d'un truc que je ne comprend pas.
En effet, pour une boucle for générique qui peut être utilisée pour n éléments, dans le cas particuliers de 1 seul élément, selon comment elle est écrite, elle ne réagit pas pareil.
Si on stocke préalablement la taille du tableau à boucler, la boucle s'execute 2 fois au lieu d'une :
Par contre si on ne stocke pas, aucun problème dans ce cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // S'execute 2 fois si 1 élément, log _i = 0 et _i = 1 var elems = $('untag'); var _len = elems.length; for(_i = 0; _i < _len; _i++) { } // Ou exactement pareil var elems = $('untag'); for(_i = 0, _len = elems.length; _i < _len; _i++) { }
Ce n'est pas un problème important mais ça intrigue fortement ma curiosité quand même, je viens juste vous demander si quelqu'un aurait une explication qui m'aurait échappé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // S'execute une seule fois si 1 élément, log _i = 0 var elems = $('untag'); for(_i = 0; _i < elems.length; _i++) { }
Note: J'ai pas tester sur IE. Juste FF, Chrome et Safari.
Merci d'avance.
PS: C'est mon premier post sur Developpez, si j'en fais trop ou pas assez dites moi![]()








Répondre avec citation

). Dans mon cas, j'ai simulé le retour de la fonction $ par un littéral, ne connaissant pas ton contexte, mais tu es sûr de ce que peut renvoyer la fonction $ ? d'où vient-elle ? jQuery ? Prototype ? fonction maison ? autre ? A toi de nous le dire et même surtout de vérifier dans la doc. de la librairie le cas échéant. En tout cas inspecte un peu ce que tu récupères dans les deux cas ("un" ou "deux" éléments) avec Firebug et tu en auras le coeur net ^^
Remplace-là par autre chose et tu verras que la boucle se comporte très bien.
(écriture impec, sympa, curieux, balises code autour des extraits...... on croit rêver ^^ )



Partager