2

私は答えをグーグルで検索しようとしましたが、問題は、問題に対処する方法が本当にわからないことです。間違ったトピックを見つけただけです。

次の違いは何ですか:

this.on('click',thisismyfunction );

と:

this.on('click', function(){

thisismyfunction();

});
4

5 に答える 5

3

注目すべき違いの 1 つは、最初の関数にイベント オブジェクトが直接渡されることthisismyfunctionですarguments[0]。2 番目のバージョンでは、そのオブジェクトは外側の無名関数に渡されます。

また、どちらの例でも、すぐには何も呼び出されません。両方の関数 (最初のケースでは名前付き関数、2 番目のケースでは無名関数) をイベント ハンドラーとしてバインドしているため、関連するイベントが発生した後に呼び出されます。

どちらを使用するかは、主にコードの構造とスタイルによって異なります。bennett_an が言ったように、同じ関数を複数のイベントにバインドする場合は、最初のバリエーションを使用することをお勧めします。

于 2013-02-07T02:33:31.220 に答える
2

1 つは名前付き関数です。そのポイントは、関数を複数の場所から複数回呼び出す可能性があるということです。もう 1 つは無名関数です。基本的には、「次のことを行う」と言っているようなものです。

関数: JavaScript の関数は、名前付きまたは匿名のいずれかです。名前付き関数は、次のように function キーワードを使用して定義できます。

function named(){
   // do some stuff here
} 

無名関数は通常の関数と同様の方法で定義できますが、名前はありません。

以下に示すように、無名関数を変数に割り当てるか、メソッドに渡すことができます。

var handler = function (){
   // do some stuff here 
}

JQuery は、次のように非常に頻繁に無名関数を使用します。

$(document).ready(function(){
   // do some stuff here 
});

TutorialsPoint jQuery Basicsからの抜粋

于 2013-02-07T02:34:35.893 に答える
1

本当に何もありません。

最初の例は直接バインドしthisismyfunctionます。2 番目の例は、呼び出されたときに呼び出す無名関数にバインドしますthisismyfunction()

于 2013-02-07T02:32:17.967 に答える
0

あなたの例では、おそらく結果に違いはありません。ただし、2 つの方法の動作はわずかに異なります。

最初の例:

  • this関数内では、クリックされた要素を参照します
  • イベントオブジェクトは、そのパラメーターを介して要素に渡されます

2 番目の例

  • this関数内では無名関数を参照しています
  • 独自の引数を簡単に渡すことができます。この場合は何も渡せません。
  • 複数の関数呼び出しを同じイベントにアタッチできます

したがって、どのスタイルを使用するかは、自分の好みと達成したいことによって異なります

于 2013-02-07T02:39:56.763 に答える
0

thisismyfunction は引数を受け取りません。匿名関数に埋め込む方法。

于 2013-02-07T02:35:34.533 に答える