【发布时间】:2010-09-09 23:54:58
【问题描述】:
我一直在想,在 Javascript 中使用命名函数和匿名函数之间是否存在性能差异?
for (var i = 0; i < 1000; ++i) {
myObjects[i].onMyEvent = function() {
// do something
};
}
对
function myEventHandler() {
// do something
}
for (var i = 0; i < 1000; ++i) {
myObjects[i].onMyEvent = myEventHandler;
}
第一个更整洁,因为它不会用很少使用的函数弄乱你的代码,但你是否需要多次重新声明该函数?
【问题讨论】:
-
我知道这不是问题,但关于代码清洁度/易读性,我认为“正确的方法”在中间。很少使用的顶级函数的“混乱”很烦人,但高度嵌套的代码也很烦人,这些代码在很大程度上依赖于在调用时声明的匿名函数(想想 node.js 回调地狱)。前者和后者都可能使调试/执行跟踪变得困难。
-
下面的性能测试会运行该函数进行数千次迭代。即使您看到了实质性差异,大多数用例也不会按照该顺序的迭代执行此操作。因此,最好选择适合您需要的任何内容,而忽略此特定情况下的性能。
-
@nickf 当然它的问题太老了,但请查看新的更新答案
标签: javascript performance optimization