目次
コールバック関数と高階関数の違い
セットで使われる概念です。指しているものが受け取る側か、渡される側かで異なります。
| コールバック関数 | 他の関数に渡されて、その中で呼び出される関数のこと |
| 高階関数 | 関数を引数として受け取る、または関数を返す関数のこと |
Pythonの場合
def test1(x, y): # yに関数を受け取る → 高階関数
z = y(2, 3)
return x + str(z)
print(test1("ABC ", lambda a, b: a * b)) # ABC 6
# ↑ これがコールバック関数
1行目の
yは、関数を受け取る引数です。→高階関数です。
5行目の
test1の2つめの引数は関数です。→コールバック関数です(関数名がないので無名関数)。
JavaScriptの場合
<script>// 関数 y を引数に受け取る高階関数
const test1 = (x, y) => {
const z = y(2, 3);
return x + String(z);
};
// 実行例:第二引数にアロー関数を渡す
console.log(test1("ABC ", (a, b) => a * b)); // 出力: ABC 6
</script>
2行目の
yは、関数を受け取る引数です。→高階関数です。
8行目の
test1の2つめの引数は関数です。→コールバック関数です(関数名がないので無名関数)。
コールバック関数は、無名関数である必要は無し
コールバック関数は無名関数でなくても構いません。
通常の関数を定義して渡すこともできます。
無名関数(特にアロー関数)が多用されるのは、以下の理由からです。
定義と使用が一度に済む:いちいち別の場所に関数を定義しなくていいため、コードの意図がその場ですぐに伝わります。
変数名の節約:1回しか使わない処理にわざわざ名前を付ける手間(命名の悩み)が省けます。
コールバック関数の種類
| 通常の関数 | 処理が複雑、複数箇所で再利用したい |
| 無名関数 | 処理が単純、その場限りで使い捨て |
関連の記事
