あなたは、このようなコードを実行した場合、例えばjQueryのフレームワークを撮影:名前付き関数はJavaScriptで過小評価されていますか?
$(document).ready(function init() { foo.bar(); });
あなたはFirebugの中で取得するスタックトレースは次のようになります。あなたが見ることができるように
init()
anonymous()
anonymous([function(), init(), function(), 4 more...], function(), Object name=args)
anonymous()
anonymous()
、それはとてもではありませんあなたはそれが何であるかを見つけるために各機能をクリックしなければならないので、読みやすい。匿名関数もプロファイラに(?)()
と表示され、 "cannot access optimized closure"のバグにつながる可能性があります。これらが避けなければならない理由は私にはあるようです。 ECMAScript 5が厳密なモードでarguments.callee
を非難するという事実があります。つまり、匿名の関数を参照することはできず、将来の証明にはなりません。
var Foo = {
bar: function bar() {}
}
function Foo() {}
Foo.prototype.bar = function bar() {}
が、私はこの繰り返しは、名前の関数が提供するデバッグの利便性の観点から正当化されていることを考えるに修正アム、及び有病率があること:という名前の関数を使用して、一方
は、例えば、繰り返しにつながることができますjQueryのような良いフレームワークでの匿名関数の監視は見落としですか?
残念ながら、その記事へのリンクはもう機能していません。しかし、同じ記事はここで見つけることができます:http://kangax.github.com/nfe/ – Jan