なんでもノート

なんでも書くノートみたいなブログ

即時関数を使ってletをconstに置き換える

※ 置き換えられないケースもあるかと思いますので、ご承知おきください。

JavaScriptの即時関数を使って、letを使いそうになるところをconstで定義できるようになることがある。 具体的には条件分岐で活躍する。 複雑なif文やswitch文で変数の値が変わるときに使える。 サンプルコードを書いていく。

let str: string = "";
if (cond1) {
  str = "hoge";
} else if (cond2) {
  str = "fuga";
} else if (cond3) {
  str = "piyo";
} else {
  str = "hogehoge";
}

JavaScriptと言いつつ、TypeScript。cond1, cond2, cond3には文字列比較や数値比較などの式が入る。このコードを即時関数を使って書き直すと以下のようになる。

const str = (() => {
  if (cond1) {
    return "hoge";
  }
  if (cond2) {
    return "fuga";
  }
  if (cond3) {
    return "piyo";
  }
  return "hogehoge";
})();

初めて見た時は面食らったが、慣れると読みやすく感じる。

即時関数じゃなくてちゃんと関数として定義すればいいじゃんという意見はごもっともです。