本文へスキップ
BecomeCoder

JavaScriptコース · 第5章 関数 ― 処理に名前をつけてまとめる · レッスン21

コールバックと高階関数 ― 関数を渡す

ブラウザで完結

導入

JavaScript では、関数を値として変数に入れたり、他の関数に渡したりできます。渡された関数をあとから呼ぶパターンをコールバックと呼びます。

説明

関数は「値」です。別の関数の引数として渡せます。

function thrice(fn) {
  fn();
  fn();
  fn();
}

thrice(() => console.log("ピン"));

配列forEach / map / filter は、まさにコールバックを受け取る高階関数です。

const names = ["太郎", "花子", "次郎"];
names.forEach((name, i) => {
  console.log(`${i + 1}. ${name}`);
});

タイマーでもコールバックが使われます(この実行環境では短時間の例のみ)。

// 同期的な「あとで呼ぶ」イメージを自作する
function later(message, fn) {
  console.log("準備:", message);
  fn();
}
later("完了処理", () => console.log("コールバック実行"));

やってみよう

thrice に別の処理を渡したり、forEach で好きな配列を表示したりしてみましょう。

演習

const nums = [10, 20, 30];forEach で1つずつ表示してください。

ヒント1を見る

nums.forEach((n) => console.log(n));

実際に動かしてみよう

下のエディタにJavaScriptを書いて「実行」を押すと、ブラウザ内のJavaScriptで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(console.log の結果が下に出ます。input() を使う回は「標準入力」欄に値を入れてから実行します)。

JavaScript — ブラウザ内で実行

ブラウザ本体のJavaScriptで実行する学習用環境を読み込みます(外部エンジン不要・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。