JavaScript ローカル変数をなくしたいときは即時関数を考えてみる

引数の値の2倍が8なら+1した数を返し、そうでないなら2倍したままの値を返す処理があるとします。

const main = (num) => {
  const double = num * 2

  if (double === 8) {
    return double + 1
  } else {
    return double
  }
}

console.log(main(4))

このmain関数から double という変数をなくす方法を考えてみます。

ローカル変数をなくす場合、その処理を別の関数として定義してあげれば良いです。

ただ、関数化するまでもない場合は、即時関数にするのもありです。

以下は、2倍にする処理と、その後の条件式部分を即時関数にしています。

const main = (num) => {
  return (() => {
    const double = num * 2

    if (double === 8) {
      return double + 1
    } else {
      return double
    }
  })()
}

console.log(main(4))

この例では少しわからりずらいですが、main関数内で他の処理がある場合は、上記のように即時関数化することで、ローカル変数をmain関数上から削除できるととともに、コードを意味のあるまとまりにまとめることができます。