6

高階関数とコールバック関数

高階関数とコールバック関数

高階関数とコールバック関数の使い方

高階関数とコールバック関数は、JavaScriptのさまざまな場面で使われており、コードの再利用性や柔軟性を高めるために役立ちます。

高階関数の使い方

高階関数を使うことで、関数を操作したり、他の関数に渡したりすることができます。

例えば、配列の各要素を加工する関数を、高階関数として実装することができます。

function processArray(array, callback) {
  const result = [];
  for (let i = 0; i < array.length; i++) {
    const processedValue = callback(array[i]);
    result.push(processedValue);
  }
  return result;
}

この関数は、配列とコールバック関数を引数として受け取ります。コールバック関数は、配列の各要素を引数として受け取り、加工した値を返します。

例えば、以下のコールバック関数は、各要素を2倍にします。

function double(value) {
  return value * 2;
}

このコールバック関数をprocessArray関数に渡すと、以下のようになります。

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = processArray(numbers, double);
console.log(doubledNumbers); // [2, 4, 6, 8, 10]

このように、processArray関数は、コールバック関数によって、配列の各要素をさまざまな処理で加工することができます。

コールバック関数の使い方

コールバック関数は、特定のタイミングで実行したい処理を記述するのに使われます。

例えば、イベントハンドラは、特定のイベントが発生したときに実行される関数です。イベントハンドラは、よくコールバック関数として実装されます。

function onClick(event) {
  console.log("クリックされました");
}
 
const button = document.querySelector("button");
button.addEventListener("click", onClick);

このコードでは、onClick関数は、ボタンをクリックしたときに実行されます。

また、コールバック関数は、非同期処理でよく使われます。非同期処理とは、処理が完了するまで待たずに、次の処理を実行する方法です。

例えば、非同期でデータを取得して表示するコードは、以下のようになります。

function getData() {
  return new Promise((resolve, reject) => {
    // データの取得処理
    // ...
 
    // 処理が完了したらresolveを呼び出す
    resolve("データ取得成功");
  });
}
 
getData().then(data => {
  console.log(data);
});

このコードでは、getData関数は、非同期でデータを取得します。getData関数は、Promiseオブジェクトを返します。Promiseオブジェクトは、処理の完了を待つためのオブジェクトです。

thenメソッドは、Promiseオブジェクトのメソッドで、処理が完了したら実行されるコールバック関数を指定します。

このコードでは、getData関数の処理が完了したら、thenメソッドで指定したコールバック関数(data => console.log(data))が実行されます。

高階関数とコールバック関数のまとめ

高階関数とコールバック関数は、JavaScriptのさまざまな場面で使われており、コードの再利用性や柔軟性を高めるために役立ちます。

高階関数は、関数を操作したり、他の関数に渡したりすることができます。

コールバック関数は、特定のタイミングで実行したい処理を記述するのに使われます。