评估功能,被唤醒后的性能

时间:2010-08-05 09:52:32

标签: javascript

我们都知道代码:

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

的执行速度比

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

有很多原因。

我想知道的是,如果通过评估字符串创建的函数将比未使用的函数更糟糕。

对于上面的例子,它意味着:esum(1,1)会比ssum(1,1)慢吗?

我想要一个答案告诉我这是否取决于浏览器的实现 (如果是这样,为什么)并且性能取决于eval-ed函数引用的变量。

非常感谢, LX

1 个答案:

答案 0 :(得分:2)

一旦js代码被篡改,它就转换成javascript(“javascript native”或“编译”)代码(在你的情况下。这不是总是因为eval评估一个表达式,结果可以是,比如说, 一个号码)。

之后,它们是简单的'ol javascript对象(函数或其他)。所以两者之间应该没有区别。

即使是ECMA-262规范(第10.4.2节)也没有谈到这种情况。