3

私はjavascriptのクロージャをある程度理解していますが、ネストされた関数をどのように処理するかについてはよくわかりません。例えば:

var a = function(o) {
    o.someFunction(function(x) {
        // do stuff
    });
}

関数を呼び出すたびに新しいクロージャが作成されることは知ってaいますが、そのクロージャには、渡された無名関数の新しいインスタンスも含まれていsomeFunctionますか?代わりにffを実行した方がよいでしょうか。

var b = function(x) { /* do stuff */ }
var a = function(o) {
    o.someFunction(b);
}
4

1 に答える 1

3

最初の例では、aが呼び出されるたびに、無名関数が定義され、に渡されsomeFunction()ます。これは、関数(現在はbと呼ばれています)が一度だけ定義されているため、より効率的な方法である2番目の例で得られたものよりも高価です。

私は数ヶ月前にこれに似た質問をしました:それはあなたにも役立つかもしれません。匿名関数の使用はパフォーマンスに影響しますか?

于 2009-03-12T06:21:21.703 に答える