あなたの定義は近いですが不十分です。コールバックは、B が適切な時点で呼び出す別の関数 B (またはオブジェクト B) に渡す関数 A です。
一部の機能では、説明したように、「適切なポイント」はその機能が完了した後です。
多くの関数またはオブジェクトは、コールバックを起動できる一連の「特定のポイント」またはイベントを定義します。たとえば、AJAX を介して定期的に自分自身を更新するコントロールがある場合、更新しようとしているときに発生するイベント、更新が戻った後に発生するイベント、および結果が表示された後に発生するイベントを定義できます。これらのイベントのいずれについても、そのイベントが発生したときに呼び出されるカスタム関数を渡すことができます。
カスタム関数が呼び出される可能性のある定義済みの一連のポイントは、人々が「フック」と呼んでいるものです。それらは、機能を事前構築済みライブラリにフックできる場所です。
追加するために編集:
OP は、フックの簡単な例を求めました。
ユーザー名のリストを取得し、リストを調べて各人の詳細を検索し、人物オブジェクトの入力済みリストを返すように設計された関数を作成したとします。
私の関数を利用しているプログラマーが、私のデータベースにユーザー名が見つからない場合にどうするべきかを指定できるようにしたいのかもしれません。関数でエラーを発生させたいプログラマーもいれば、欠落している例を無視したいプログラマーもいれば、別のデータベースを調べたいプログラマーもあれば、空の人物オブジェクトを構築したいプログラマーもいるでしょう。
だから私の関数の署名は次のようなものかもしれません
function getPeople( arrayOfUsernames, missingUsernameCallback )
関数内で、データで見つからないユーザー名に到達するたびに、呼び出すだけです
missingUsernameCallback( notFoundUsername );
これで、プログラマーは次のように関数を呼び出すことができます
getPeople( ["adam","betty","charlie"], function(name){ alert("Missing username " + name)} );
不足しているユーザー名にヒットするたびに、渡された関数を呼び出します。
より複雑なケースでは、複数のコールバック関数を含むオブジェクトを受け入れる必要がある場合があるため、次のように呼び出すことができます
getPeople( ["adam","betty","charlie"],
{startOfListCallback: function(){ alert("I'm starting the list")},
missingUsernameCallback: function(){ alert("Missing username"!)},
endOfListCallback: function(){ alert("I'm at the end of the list") });
可能なコールバックのリストは関数によって定義され、API ドキュメントに記載されている必要があります (コールバックなどに渡すことができるパラメーターと共に)。そのコールバックのリストがフックです。