Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

コールバック関数かんすう

留学生りゅうがくせいのみなさんにもわかりやすいように、「コールバック関数かんすう をやさしい日本語で説明せつめいします。


I. コールバック関数かんすうを一言(ひとこと)でいうと?

「あとで やってね!という おねがいのメモ」 です。

ふつうのプログラムは、上から下へ順番じゅんばんすすみます。 でも、コールバック関数かんすうは「今すぐ」ではなく、「あるときが来たら」 動くように予約よやくする命令めいれいです。


II. 「お店でのちゅうもん」で たとえてみましょう

あなたがレストランへ行きました。

  1. あなた(メインプログラム): 店員さんに「オムライスをください。できあがったら、ベルを鳴らしてください」と言いました。
  2. 店員さん(forEachメソッド): 料理りょうりを作ります。
  3. ベルを鳴らす(コールバック関数かんすう): 料理ができたタイミングで、店員さんがベルを鳴らします。

この「できあがったら、〇〇してね」という 「〇〇」の部分 がコールバック関数かんすうです。


III. forEach の中でのうご

forEach は、配列はいれつ(データのリスト)の中身をひとつずつていく命令です。

// 果物(くだもの)の名前のリスト
const fruits = ["りんご", "バナナ", "みかん"];

// fruits.forEach( ここに書くのがコールバック関数(かんすう) );
fruits.forEach((item) => {
  console.log(item + "を食べます");
});

プログラムの中の会話(かいわ)

  • forEach: 「リストの中身をひとつずつ取り出すよ! 取り出すたびに、何をすればいい?」
  • コールバック関数かんすう: 「取り出したものに『を食べます』をつけて表示ひょうじしてね!」
  • forEach: 「わかった! じゃあ、『りんご』を取り出したから、君(コールバック関数かんすう)にわたすね。実行じっこうして!」
  • コールバック関数かんすう: 「はい!『りんごを食べます』と出します!」

これを、リストが終わるまで繰り返くりかえします。


IV. なぜ「コールバック」という名前なの?

英語(えいご)の “Call back”(電話をかけなおす) と同じ意味です。

  • ふつうの関数かんすう あなたが関数かんすうを「呼ぶ(Call)」。
  • コールバック関数かんすう 相手(forEachなど)が、あとであなたを「呼び出す(Call back)」。

このように、主役しゅやくわる」 のがポイントです。


まとめ

  • コールバック関数かんすう = 他のプログラムに「これ、あとで使ってね」と渡す関数かんすうのこと。
  • forEach = リストのデータひとつずつに、コールバック関数かんすうを動かしてあげる役割やくわり

V. プログラムれい

「数字の合計ごうけい」を計算けいさんするコードを書いてみます。やさしい日本語で説明せつめいしながら書きます。

1. 合計ごうけいを計算するプログラム

このプログラムは、リストの中にある数字を全部ぜんぶして、最後さいごに答えを出します。

// 1. 数字のリストを作ります
const numbers = [10, 20, 30, 40];

// 2. 合計を入れる「空(から)の箱」を作ります。最初は 0 です。
let total = 0;

// 3. forEach を使って、ひとつずつ足していきます
numbers.forEach((num) => {
  // ここがコールバック関数(かんすう)です!
  total = total + num; 
  console.log(num + " を足しました。今は " + total + " です。");
});

// 4. 最後に答えを表示(ひょうじ)します
console.log("ぜんぶの合計は " + total + " です!");


2. プログラムのうごきを解説かいせつ

let total = 0;

これは、計算けいさん結果けっかを入れておくための 貯金箱ちょきんばこ のようなものです。最初は何も入っていないので 0 にしておきます。

② コールバック関数かんすうの仕事

numbers.forEach((num) => { ... }); の中(なか)が、おねがいしたメモ(コールバック関数かんすう)です。

  • forEach がリストから 10 を見つける。
  • コールバック関数かんすう10わたす。
  • 関数かんすう「今の合計(0)に 10 を足してね!」実行じっこうする。
  • 次の 20 でも同じことをする。

これを繰り返くりかえすことで、貯金箱の中身がどんどん増えていきます。


3. もっと短く書く方法

プログラミングにれてきたら、こんなかたもできます。

  • total = total + num;
  • total += num; (これでも同じ意味になります!)

戻る