2012-02-20 32 views
0

クロージャは強力なツールですが、正しく使用されないとパフォーマンスの問題が発生すると言われています。クロージャがいつパフォーマンスの問題を引き起こすか

どのような場合に発生するのでしょうか?

ライブのサンプルでは、​​より良いです。 :)

+2

_Anything_は、誤って使用するとパフォーマンスの問題を引き起こす可能性があります。 – SLaks

答えて

2

1つのインスタンスがループでそれらを作成しています。次の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クロージャを扱うときにつまずくことができ、パフォーマンスの問題の

+0

ログ機能は終了していますか?私はそれが名前のない関数だと思う。 – hguser

+0

※クロージャーではありません。最適化はクロージャの使用を取り除くことである。例はクロージャーの誤用*であり、修正は1つを使用しないことです。また、ログには名前付き関数があります。 – Chad

1

一つは、あまりにも多くのネストレベルです。

提供される機能は、他の多くの回で1ラップされ、タイムエンジンは時々大きくなる可能性が内部機能に使用される変数を探すときに過ごすことがあります。

関連する問題