0

ランダムな質問ですが、おそらくベストプラクティスに役立ちます-イベントハンドラーの段階で入力値を取得して関数に渡すことと、関数内で取得することの利点または欠点はありますか? 次のように:

$('.ep').on('click',function(event) {
   get value1
   get value2
   doSomething(value1,value2)
});

とは対照的に

function doSomething()
    get value1
    get value2
    ...rest of function
}
4

1 に答える 1

0

2番目の完全な例は次のとおりです。

function doSomething()
    get value1
    get value2
    ...rest of function
}

$('.ep').on('click', doSomething);

次に、これら 2 つは機能的に同一であるため、パフォーマンスは同じです。最初に、無名関数を定義し、それを引数として渡します。2 番目では、名前付き関数を定義し、名前付き関数を引数として渡します。どちらの場合も、同じ関数本体が実行されます。

ただし、この例のパフォーマンスは向上する可能性があります。

var doSomething = (function(){
    get value1
    get value2
    return function(){
        ...rest of function
    }
})();

$('.ep').on('click', doSomething);

これは、この例では、即時関数を使用し、即時関数内で and を定義value1value2て、代入する関数を返すためdoSomethingです。これは、即時関数の実行時にvalue1とが一度value2割り当てられることを意味しますが、Javascript クロージャーのおかげで、返される関数内で両方にアクセスできます。

これは、最初の 2 つの例とは対照的です。どちらも と を宣言value1value2、イベントが発生するたびに関数を実行します。

于 2013-09-26T04:30:30.717 に答える