【Javascript】 switch文
Javascriptにおけるswitch文は、C言語のswitchとほとんど同じ書き方です。ただ、C言語にはできない、文字列でのswitchが可能です。
書き方
C言語と同じように書きます。
const x = 1; switch (x) { case 0: console.log("x is 0"); break; case 1: console.log("x is 1"); break; case 2: console.log("x is 2"); break; }
x is 1

case
に指定する条件は、条件式ではなく値です。この値と一致しているかを判定します。
ここで、for文のときに紹介したbreak
が登場しています。break
はswitch文でも使われ、それ以降のswitch内の処理を行わない、というものです。これがないと次のような現象が起こります。
const x = 1; switch (x) { case 0: console.log("x is 0"); case 1: console.log("x is 1"); case 2: console.log("x is 2"); }
x is 1 x is 2
"x is 2"
まで出力されてしまいました。これは、switch文の条件でcase 1
の部分まで飛んだ後、break
するまでswitch内の処理が行われるためです。
もちろん、これを利用した方法もあります。
const x = 0; switch (x) { case 0: case 1: console.log("x is 0 or 1"); break; case 2: console.log("x is 2"); break; }
x is 0 or 1
x
が0
だった場合はcase 0
に飛びますが、その後break
がないのでcase 1
に来ても処理が続き、console.log("x is 0 or 1");
が実行されました。しかし、内容を見るとそれを想定した内容になっています。
default句
いずれのcase
も当てはまらない場合、default
に飛びます。if文のelseのようなものです。
const x = 10; switch (x) { case 0: break; case 1: break; case 2: break; default: console.log("xは0, 1, 2ではない"); }
xは0, 1, 2ではない
else
と同様に、他のcase
に当てはまっていれば、この処理は実行されません。
文字列でのswitch
Javascriptでは、文字列でswitchできます。
const time = "afternoon"; switch (time) { case "morning": console.log("朝"); break; case "afternoon": console.log("午後"); break; }
午後
ifとの使い分け
switchでは完全一致でしか比較できません。そのため、完全一致比較が続く場合はswitch文を利用する方が簡潔になります。
しかし, その完全一致も何個も続くようであれば、後々の処理の分離や改修しやすさを考え、事前に関数化して配列または連想配列に入れて実行する、という手もあります。
const funcs = [ () => {console.log("x is 0")}, // 0番目の要素 () => {console.log("x is 1")}, // 1番目の要素 () => {console.log("x is 2")}, // 2番目の要素 ]; const x = 1; funcs[x]();
x is 1
この書き方は、プログラミング発展の関数と変数の章で紹介しています。
まとめ
Javascriptのswitch文では、文字列を指定することが可能です。しかし、代替手段が多いため、どうしても使わないと冗長になる時などでないとあまり使いません。
とはいえ使うときは使うので、書き方だけ知っておくと良いと思います。
