par
Berzemus » 14 mars 2011, 14:49
Ivo Wetzel et Zhang Yi Jiang ont compilé un fantastique aperçu des petits travers de Javascript, avec pour chacun une explication, une réponse et une conclusion.
http://bonsaiden.github.com/JavaScript- ... r.timeouts
Quelques-unes particulièrement intéressantes:
La structure
for (... in ...) est extrêmement inefficace pour parcourir un tableau (comparativement à une boucle classique
for (var i=0,l=length; i<l; i++) )), puisqu'elle parcourt toutes les propriétés (donc non désirables) de l'objet Array, en plus d'être bien plus lente.
Lors d'un
for (... in ...) il est utile d'utiliser le .hasOwnProperty pour distinguer ce qui appartient directement à un objet de ce que contiennent ses prototypes.
Utilise une chaîne de caractères comme premier argument de
setTimeOut() est en réalité un eval() caché, et donc son contenu est exécuté dans le contexte global. Il est plus utile de lui passer une fonction anonyme, qui sera alors exécutée dans le contexte local.
La seule utilité de
typeof est de voir si une fonction à été déclarée ou pas. Pour déterminer le type d'un élément,
Object.prototype.toString est bien plus utile et consistante.
Et bien plus encore sur la page originale.
Ivo Wetzel et Zhang Yi Jiang ont compilé un fantastique aperçu des petits travers de Javascript, avec pour chacun une explication, une réponse et une conclusion.
[url]http://bonsaiden.github.com/JavaScript-Garden/#other.timeouts[/url]
Quelques-unes particulièrement intéressantes:
La structure [b]for (... in ...) [/b] est extrêmement inefficace pour parcourir un tableau (comparativement à une boucle classique [b]for (var i=0,l=length; i<l; i++)[/b] )), puisqu'elle parcourt toutes les propriétés (donc non désirables) de l'objet Array, en plus d'être bien plus lente.
Lors d'un [b]for (... in ...) [/b] il est utile d'utiliser le .hasOwnProperty pour distinguer ce qui appartient directement à un objet de ce que contiennent ses prototypes.
Utilise une chaîne de caractères comme premier argument de [b]setTimeOut()[/b] est en réalité un eval() caché, et donc son contenu est exécuté dans le contexte global. Il est plus utile de lui passer une fonction anonyme, qui sera alors exécutée dans le contexte local.
[code]setTimeOut( function(){ fait_quelque_chose(42);}, 1000)[/code]
La seule utilité de [b]typeof[/b] est de voir si une fonction à été déclarée ou pas. Pour déterminer le type d'un élément, [b]Object.prototype.toString[/b] est bien plus utile et consistante.
Et bien plus encore sur la page originale.