コールバックの実行がコールバック()
のようになって引数がない場合でも、入れ子のコールバックにすれば引数を渡せる。
// 引数のないコールバック実行に対して引数を渡すには?
// この関数の定義は変えられないものとする。(例えばサードパーティのライブラリを想定)
function 関数(コールバック) {
コールバック() // 引数を渡したい! どうする?
}
// コールバックにしたい関数には仮引数がある
function 倍返し(x) {
console.log(x * 2)
}
// コールバックにしたい関数を仮引数のないコールバックで囲って入れ子にする。
関数(() => {
倍返し(5)
}) // 10
// コールバックを戻す関数を作ってもいい。
function コールバック取得(x) {
return () => {
倍返し(x)
}
}
関数(コールバック取得(5)) // 10