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関数上から削除できるととともに、コードを意味のあるまとまりにまとめることができます。
最近のコメント