我们都知道代码:
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
答案 0 :(得分:2)
一旦js代码被篡改,它就转换成javascript(“javascript native”或“编译”)代码(在你的情况下。这不是总是因为eval评估一个表达式,结果可以是,比如说, 一个号码)。
之后,它们是简单的'ol javascript对象(函数或其他)。所以两者之间应该没有区别。
即使是ECMA-262规范(第10.4.2节)也没有谈到这种情况。