引数なしのコールバック実行に引数を渡すなら入れ子

コールバックの実行がコールバック()のようになって引数がない場合でも、入れ子のコールバックにすれば引数を渡せる。

// 引数のないコールバック実行に対して引数を渡すには?
// この関数の定義は変えられないものとする。(例えばサードパーティのライブラリを想定)
function 関数(コールバック) {
  コールバック() // 引数を渡したい! どうする?
}

// コールバックにしたい関数には仮引数がある
function 倍返し(x) {
  console.log(x * 2)
}

// コールバックにしたい関数を仮引数のないコールバックで囲って入れ子にする。
関数(() => {
  倍返し(5)
}) // 10

// コールバックを戻す関数を作ってもいい。
function コールバック取得(x) {
  return () => {
    倍返し(x)
  }
}

関数(コールバック取得(5)) // 10