Javascript 何时关闭会导致性能问题

Javascript 何时关闭会导致性能问题,javascript,closures,Javascript,Closures,闭包是一个强大的工具,但据说如果使用不当,它将导致性能问题 所以我想知道在哪种情况下会发生 如果有实例,效果更好。:) 一个实例正在循环中创建它们。考虑下面的jQuery: for(var i = 0; i < 1000; ++i) $('#elements').click(function(e) { console.log(e); }); for(变量i=0;i

闭包是一个强大的工具,但据说如果使用不当,它将导致性能问题

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


如果有实例,效果更好。:)

一个实例正在循环中创建它们。考虑下面的jQuery:

for(var i = 0; i < 1000; ++i)
    $('#elements').click(function(e) { console.log(e); });
for(变量i=0;i<1000;++i)
$('#elements')。单击(函数(e){console.log(e);});
这将在每次迭代中创建一个闭包。这可以通过单独创建函数轻松优化:

function log(e) { console.log(e); }
for(var i = 0; i < 1000; ++i)
    $('#elements').click(log);
函数日志(e){console.log(e);}
对于(变量i=0;i<1000;++i)
$(“#元素”)。单击(日志);

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

一个实例正在循环中创建它们。考虑下面的jQuery:

for(var i = 0; i < 1000; ++i)
    $('#elements').click(function(e) { console.log(e); });
for(变量i=0;i<1000;++i)
$('#elements')。单击(函数(e){console.log(e);});
这将在每次迭代中创建一个闭包。这可以通过单独创建函数轻松优化:

function log(e) { console.log(e); }
for(var i = 0; i < 1000; ++i)
    $('#elements').click(log);
函数日志(e){console.log(e);}
对于(变量i=0;i<1000;++i)
$(“#元素”)。单击(日志);

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

处理闭包时可能会遇到的性能问题之一是嵌套级别过多


如果函数多次相互包装,引擎在查找内部函数中使用的变量时所花费的时间有时可能非常重要。

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


如果函数多次相互包装,引擎在查找内部函数中使用的变量时所花费的时间有时会很长。

如果使用不当,任何东西都可能导致性能问题。如果使用不当,任何东西都可能导致性能问题。日志函数是否是一个闭包?我认为这只是一个未命名的函数,不是闭包。优化将是取消闭包的使用。这个例子是对闭包的误用,修复方法是不使用闭包。日志也是一个命名函数。日志函数是闭包吗?我认为这只是一个未命名的函数,不是闭包。优化将是取消闭包的使用。这个例子是对闭包的误用,修复方法是不使用闭包。日志也是一个命名函数。