🦔
コールバック関数なんて関数は存在するのか
コールバック関数
コールバック関数はプログラミングをしているとよく耳にします。
耳にするたびにコールバック関数について調べるのですが、どうも記憶に定着しません。
記憶に定着しないときは概して、ちゃんと理解できていない点や、腑に落ちていない点があるときなので、私のコールバック関数に対する理解をまとめてみました。
他の関数の引数として渡される関数のこと
コールバック関数とは、他の関数の引数として渡される「関数」です。
ということは、下記はまだ、ただの関数です。
function funcA() {
console.log("funcA");
}
こちらはどうでしょう?
function funcA() {
console.log("funcA");
}
function funcB(paramFunc){
console.log("funcB");
paramFunc();
}
funcB(funcA); // funcB funcA
このとき、funcA
はコールバック関数ですか?
たしかに、funcA
は、別の関数funcB
の引数として渡されました。
けど、funcA
はただの関数です。
「コールバック関数」は、「関数」を引数に取る関数
ありきの用語です。
ある関数は、「関数」を引数に取る関数
の引数に指定されたとき、その「関数」を引数に取る関数
の中でのみ、コールバック関数と呼ばれることができます。
コールバック関数 = 引数に指定された関数
なので言葉の使い方は、以下のようになります。
◯ funcB
のコールバック関数は、funcA
です。
◯ funcB
のコールバック関数に、funcA
を指定する。
◯ funcA
はfuncB
のコールバック関数です。
なのでこんな表現は微妙です。
✕ コールバック関数を受け取る関数
コールバック関数は受け取れません。(正:関数を受け取る関数)
✕ funcA
はコールバック関数です。
否、funcA
は関数です。他の関数のコールバック関数ではあり得ます。
言い換えとして下記は可能かと思います。
- funcBの引数の関数は、
(cnt)=>cnt++
です。 - funcBのコールバック関数は、
(cnt)=>cnt++
です。
おわり
私のコールバック関数の違和感が解消できるようにまとめてみました。
参考になればと思います。
Discussion