1

私は数日前にjQueryに精通し、jQueryが実行できる小さな魔法に気づき始めています。

引数付きのコールバックがjQueryでどのように正確に実行されるか、つまり正確な実行シーケンスは何であるかを知りたいです。

リンクhttp://docs.jquery.com/Tutorials:How_jQuery_Worksにアクセスしました

そしてそれは間違った方法について話しますすなわち

$.get('myhtmlpage.html', myCallBack(param1, param2));

そして正しい方法、すなわち

$.get('myhtmlpage.html', function(){
  myCallBack(param1, param2);
});

最初のケースでは、myCallBackが最初に実行され、次にその戻り値が取得する引数として機能します。後者のメソッドでは、getはmyCallBackの影響を受けるWebページを返します。

構文的には、myCallBackがまだ取得するための引数であるため、どのように機能しますか?私はこれについて少し混乱しています。

乾杯

4

3 に答える 3

3

これは実に漠然とした例です。あなたは書くべきです:

$.get('myhtmlpage.html', function(param1, param2){
  myCallBack(param1, param2);
});

これは、内部的にjQueryが次のようなことを行うためです(非常に単純化されています):

$.get = function(url, callback){
  //make call to url
  //when completed execute callback:
  callback(param1, param2);
}

次のように書くこともできます。

$.get('myhtmlpage.html', myCallBack);

これにより、2 つのパラメーターを使用して myCallBack も呼び出されます。

于 2009-06-11T16:24:43.887 に答える
1

最初のインスタンスでは、myCallBack(param1, param2)すぐに評価されて実行されます。この構文では、 が呼び出される前$.get()に呼び出されます。

2 番目のインスタンスでは、名前のない匿名の関数が定義されmyCallBack()、後で使用するために囲みます。パラメータとして保存され、が呼び出された$.get()後にのみ起動されます。$.get()

コールバックの詳細については、ウィキペディアのコールバック (コンピューター サイエンス)を参照してください。

于 2009-06-11T16:26:06.427 に答える
0

この構文を使用する場合:

myCallBack(param1, param2) 

行っていることは、関数を呼び出して結果を取得することです。これは、通常の関数呼び出しと同じです。

この構文を使用する場合:

myCallBack

関数を呼び出しているのではなく、関数について言及しているため、この構文を使用して myCallBack をコールバック関数として渡すことができます。

3 番目の方法:

function(){myCallBack(param1, param2);}

myCallBack への呼び出しで構成される名前のない新しい関数を作成します。これは、関数呼び出しに渡すか、変数に割り当てることができます。

余談ですが、例で行った方法でこの構文を使用する場合は注意が必要です。この場合、param1 と param2 は無名関数によってバインドされず、空白になるか、包含スコープからの値が入力されるためです。

于 2009-06-11T16:29:39.367 に答える