コールバック関数
別名: Callback Function, コールバック
コールバック関数とは、他の関数に渡して、あとから呼び出してもらう関数のことです。
「この処理が終わったら、この関数を実行してね」と頼んでおくイメージです。
コールバック関数はJavaScript、Python、Java、Rubyなどどの言語にも共通する概念です。
この記事ではJavaScriptを例に説明します。
ボタンをクリックしたらメッセージを表示してみよう
以下のコードでは、ボタンをクリックすると「クリックされました!」と表示されます。
実際に「クリック」ボタンを押してみてください。
このコードの最後の行に注目してください。
button.addEventListener('click', showMessage);addEventListener に showMessage という関数を渡しています。
この渡された showMessage がコールバック関数です。
showMessage は自分で実行しているわけではありません。
ボタンがクリックされたタイミングで、addEventListener が代わりに実行してくれます。
自分で呼ぶのか、呼んでもらうのか
普通の関数呼び出しとコールバック関数の違いを整理しましょう。
// 普通の呼び出し:自分で今すぐ実行する
showMessage();
// コールバック:あとで呼んでもらう(()をつけない)
button.addEventListener('click', showMessage);showMessage() のように () をつけると、その場ですぐに実行されます。
showMessage のように () をつけないと、関数そのものを渡すだけで、まだ実行されません。
| 書き方 | 意味 |
|---|---|
| showMessage() | 今すぐ実行する |
| showMessage | 関数を渡すだけ(あとで呼んでもらう) |
コールバック関数では () をつけずに渡す、というのがポイントです。
コールバック関数が使われる場面
ボタンのクリック以外にも、コールバック関数はあらゆる場面で使われます。
| 場面 | やりたいこと | コールバックの役割 |
|---|---|---|
| ユーザーの操作 | ボタンが押されたら処理したい | クリックされたときに呼び出される |
| データの加工 | リストの各要素を変換したい | 1つずつ要素を受け取って処理する |
| 時間の経過 | 3秒後に処理を実行したい | 指定時間が経ったら呼び出される |
| 外部との通信 | サーバーからデータを取得したい | データが届いたら呼び出される |
すべてに共通するのは、「ある条件が揃ったときに、渡しておいた関数を呼び出す」 というパターンです。
これはJavaScriptに限った話ではありません。
たとえばPythonのリスト操作やJavaのイベント処理など、どの言語でもコールバック関数は登場します。
まとめ
- ✓コールバック関数は、他の関数に渡してあとから呼び出してもらう関数
- ✓渡すときは()をつけない。()をつけるとその場で実行されてしまう
- ✓イベント処理、配列操作、非同期処理など幅広く使われる