2009-03-05 81 views

答えて

12

http://jibbering.com/faq/faq_notes/closures.htmlの冒頭をチェックしてください。クロージャが関数にどのように関連しているかを理解するのに役立ちます。 http://www.javascriptkit.com/javatutors/closures2.shtml

基本的に、コールバック関数のポインタのようなものである:ここ

は、閉鎖例のセットです。それを閉鎖するビットは、その関数がその外部の変数のように、存在するコンテキスト上のものにアクセスするときです。それが起こると、関数は(コピーするのではなく)変数の現在の値を使用します。例に4.

+0

ああ、それはMr. Fredさんを解消します。ありがとうございました! :) – leeand00

4

閉鎖hereの良い定義があります:

A「クロージャ」は これらの変数をバインド 環境と一緒に 自由変数を持つことができる表現 (通常の関数)である( "という式を閉じます)。

実際には、それはいくつかの隠された変数を持つ関数です。

コールバックは、より高いレベルのアイデアです。一般的には、後で呼び出されるという目的で渡される関数です。 JavaScriptでは、クロージャはコールバックとしてよく使用されます。

7

異なる定義を参照してください:

Callback -

コールバックは他のコードに引数として渡される実行可能コードです。

Closure -

クロージャは、一つ以上のバインド変数を含む環境で評価される関数です。呼び出されると、関数はこれらの変数にアクセスできます。

-1

私は2つがどのように関連しているのか分からないのですか?クロージャは、地方の州の一部を何らかの関数に運び、それを参照渡しと考える。

コールバックは、特定の変更について通知するためのもので、プログラムフローをリダイレクトします。クロージャはローカルの状態を変更する可能性がありますが、コールバックの場合と同様に、プロセッサの処理時間は決してかかりません。

+0

誰かがここで2つが関連していると私に言った:http:// stackoverflow。com/questions/615642/do-this-your-call-of-a-callback/615752#615752 – leeand00

1

コールバックは、コンテキスト変数別名バインド変数(==オブジェクト状態)に応じてクロージャになります。これは、純粋な関数になります。それ以外の場合は、空き変数(==パラメータ)しか必要としません。

3

単純に言えば、コンテキスト変数を使用するコールバックはクロージャです。

関連する問題