2009-06-11 5 views
1

私は数日前にjQueryを知り、できる小さなマジックを実現し始めました。引数を指定したコールバックはどのように実行されますか?

引数を指定したコールバックがjQueryでどのくらい正確に実行されているか、つまり正確な実行順序は何かを知りたいのですが、

私はリンクを介してhttp://docs.jquery.com/Tutorials:How_jQuery_Works

を行って、それは、最初のケースで

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

すなわち

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

正しい方法すなわち間違った方法のことを話しますmyCallBackが最初に実行され、その戻り値がarguとして機能します取得するためにment。後者の方法では、getはmyCallBackによって動作するWebページを返します。

構文的にどのように機能するのですか?myCallBackはまだ引き続き引数として使用できますか?私はこれについて少し混乱している。

歓声

答えて

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); 
} 

をあなたはまた書くことができる:またしてmyCallBackを呼び出します

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

2つのパラメータ

1

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

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

コールバックの詳細については、WikipediaのCallback (computer science)を参照してください。

0

あなたはこの構文を使用する場合:

myCallBack(param1, param2) 

あなたがちょうどあなたが関数を呼び出すとする他のいずれかの時間のように、関数を呼び出して結果を取得してやっています。

あなたはこの構文を使用する場合:

myCallBack 

をあなたはこの構文は、コールバック関数としてmyCallBackを渡すために使用することができる理由である、関数を呼び出しますが、機能に言及されていません。

第三の方法:

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

はmyCallBackへの呼び出しで構成されて新しい名前の関数を作成します。これは、関数呼び出しに渡すことも、変数に代入することもできます。

この例では、param1とparam2が匿名関数にバインドされていないため、この例のようにこの構文を使用することに注意してください。包含スコープ

関連する問題