Pages

mercredi 5 décembre 2012

setTimeout/setInterval et le eval caché

Tout le monde sait que eval c'est le mal, surtout parce que les interpréteurs (ou compilateurs) n'optimisent pas les codes générés avec.

Il existe au moins deux fonctions faisant un eval() si mal utilisées: setTimeout et setInterval.

Ces deux fonctions peuvent prendre une chaîne de caractères, et si c'est le cas, le mal, euuh eval est enclenché.

Une dernière chose mal connue car n'existant pas sur IE (jusqu'à je ne sais quelle version) est que les paramètres supplémentaires seront transmis à la fonction lors de son appel.

setTimeout(alert, 1000, "plop") //alert("plop") au bout d'une seconde

Et pour la perte du this (qui se présente toujours lors de passage de fonction), il y a Function.bind depuis js 1.8.5. Comme souvent (toujours ?) une implémentation est présente pour les navigateurs ne l'implémentant pas encore.

Aucun commentaire: