コールバックの戻り値を利用する関数

配列.filter()のように、コールバックの戻り値に応じて動作を変える関数の例。

// コールバックの戻り値がtrueならxが選ばれる関数。
function 関数(x, y, コールバック) {
  if (コールバック(x, y) === true) {
    console.log(`不思議の国の${x}`)
  } else {
    console.log(`不思議の国の${y}`)
  }
}

// このパターンは匿名関数をよく使う。
関数('アリス', 'アリストテレス', () => {
  return Math.random() < 0.9 // 9割はtrue
})

// すっきりコードや再利用なら名前あり関数で。
関数('アリスタルコス', 'アリス', 長い方) // 不思議の国のアリスタルコス
関数('アリス', 'アリスティッポス', 長い方) // 不思議の国のアリスティッポス

function 長い方(x, y) {
  return x.length > y.length // xが長い
}