何时关闭会导致性能问题

时间:2012-02-20 14:09:04

标签: javascript closures

Closure是一个功能强大的工具,但据说如果使用不当会导致性能问题。

所以我想知道它会在哪种情况下发生?

如果有实例,那就更好了。 :)

2 个答案:

答案 0 :(得分:2)

一个实例是在循环中创建它们。考虑以下jQuery:

for(var i = 0; i < 1000; ++i)
    $('#elements').click(function(e) { console.log(e); });

这将在每次迭代时创建一个闭包。这可以通过单独创建功能轻松优化:

function log(e) { console.log(e); }
for(var i = 0; i < 1000; ++i)
    $('#elements').click(log);

然后你只是传递一个引用而不是重复重新创建闭包。

答案 1 :(得分:1)

在处理闭包时可能遇到的一个性能问题是嵌套级别太多。

提供的函数被多次包装在一起,时间引擎在查找内部函数中使用的变量时必须花费的时间有时很大。

相关问题