Posted at

JavaScript で条件分岐して変数に代入する

JavaScript で条件分岐してから変数に値を代入したいとき、いつも次のようなコードを書いていませんか?

let hoge; // let で一旦宣言する

// switch 文の中で初期化する
switch (cond) {
case "case1": hoge = 1; break;
case "case2": hoge = 2; break;
case "case3": hoge = 3; break;
}

毎回これを書くのは面倒だし、できれば let ではなく const を使いたいものです。

そこで、いわゆる即時関数を使用することで、「一旦変数を宣言し、後で初期化する」という面倒くさい手順を回避できます。

// 宣言と初期化を同時にできる

const hoge = (function(_cond) {
switch (_cond) {
case "case1": return 1;
case "case2": return 2;
case "case3": return 3;
}
})(cond);

この手法は、条件が3つ以上に分岐する場合便利です。Kotlin の when 式みたいなの使えないかなーと思ってたら閃きました。


おまけ

条件が2つならば、三項演算子を使用できます。

const hoge = cond == "case1" ? 1 : 2;