2010-08-05 6 views
1

Nous savons tous que le code:eval-ing une fonction, la performance après avoir été evaled

var ssum = function(a,b) { return a+b; } 

exécute plus vite que

eval("var esum = function(a,b) { return a+b; } "); 

pour de nombreuses raisons. Ce que je veux savoir, c'est que si une fonction qui a été créée en évaluant une chaîne sera pire que si elle ne l'avait pas été.

Pour l'exemple ci-dessus, cela signifie: Est-ce que esum (1,1) sera plus lent que ssum (1,1)?

Je voudrais une réponse qui me dit si cela dépend de l'implémentation du navigateur (et si oui pourquoi) et si la performance dépend des variables référencées par la fonction eval-ed.

Merci beaucoup, Lx

Répondre

2

Une fois le code js est evaled, son converti en javascript (« javascript natif » ou « compilé ») code (Dans votre cas. Ce n'est pas toujours le cas parce que eval évalue une expression et dont le résultat peut être, disons, un nombre). Après cela, il s'agit d'objets javascript simples (fonctions ou autres). Donc, il ne devrait pas y avoir de différence entre les deux.

Même la spécification ECMA-262 (section 10.4.2) ne parle pas d'un tel cas.

+0

Merci ................ – Lx1

Questions connexes