2

いくつかのjsコードのパフォーマンスに取り組んでいて、このアプローチを見ました:

window.sample = {

    foo: function foo(a,b){
       // code goes here
    }

    bar: function bar(a,b){
       // code goes here
    }

}

「関数」という単語の後に関数名を減速する理由はありますか?

デバッグに役立ちますか?

それは良いか悪いか、それとも単に不必要ですか?

4

3 に答える 3

4

唯一の理由は、オブジェクトへの参照なしで関数内から関数自体を使用できることです。

foo: function foo(a,b){
   return a > 0 ? a + foo(a-1,b) : b;
}

ただし、名前付き関数リテラルのサポートはブラウザー間で一貫していないため、使用を避ける必要があります。

于 2012-05-23T13:07:50.757 に答える
1

匿名関数を foo および bar プロパティに割り当てる代わりに、名前付き関数を割り当てています。

デバッグに役立ちます。これがもたらす唯一の違いは、「JavaScript匿名関数」ではなく、関数の名前がコールスタックに表示されることです。

于 2012-05-23T13:07:02.903 に答える
0

名前付きの関数式です。関数の名前は、関数自体の変数としてのみ使用できます。これは、再帰に役立ちます。たとえば、次のようになります。

var obj = {
    foo: function foo(node) {
        // Do something to node

        var childNode = node.firstChild;
        while (childNode) {
            foo(childNode);
            childNode = childNode.nextSibling;
        }
    }
};

関数の名前は、関数の非標準nameプロパティを介してほとんどのブラウザーでも利用できます。これは、スタック トレースのデバッグまたは調査中に関数を識別するのに役立ちます。

IE < 9 は実装に欠陥があるため、使用する際には注意が必要です。詳細については、この件に関する Juriy Zaytsev の優れた記事を参照してください

于 2012-05-23T14:05:40.633 に答える