根据这个基准 http://jsperf.com/function-vs-function 创建的函数运行速度快约1000倍。你能评论一下吗?
答案 0 :(得分:5)
f1
但不是f2
。即你的第二次测试除了查找参考文献外什么也没做。我认为你想要的实际上就是这样:http://jsperf.com/function-vs-function/2
更新:第二个想法,你可能不想要这个。但是,你的第二次测试无所作为。您在()
;)
f2
所以除了new Function
慢一点之外,维护函数体也更难;)
答案 1 :(得分:2)
使用new Function
- 语法,对于每个函数,JS编译器必须启动以“eval”函数体字符串 - 这很慢并且应尽可能避免:
每次[...] Function构造函数 在字符串表示上调用 源代码,脚本引擎必须 启动转换机器 源代码到可执行代码。这个 性能通常很昂贵 - 容易一百倍贵 比起一个简单的函数调用 例。 (Mark'Tarquin'Wilton-Jones)
如果你在StackOverflow上使用了搜索,你会发现this question提供非常详细的信息。
编辑:就像Martin在下面的一条评论中所说,有时 new Function
- 构造函数是一件好事。列举一些例子:
但是:在99%的情况下,你可以使用new Function
,这是一个坏主意 - 这意味着:简单地定义任何必须像它一样的功能并且不会没有某种“动态行为”,你应该总是使用“普通”函数语法来加速你的代码并避免使用eval
类似new Function
的功能。