[javascript] Bonnes pratiques.
Posté : 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.
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.
Code : Tout sélectionner
setTimeOut( function(){ fait_quelque_chose(42);}, 1000)Et bien plus encore sur la page originale.