ifは、基本的に「正しいかそうでないか」という二者択一による処理の分岐を行いますが、時には3つ以上の分岐が必要となる場合もあります。このような場合に用いられるのが「 switch 」という構文です。
これは、分岐の条件となるもの(式や変数など)を用意し、その値に応じて必要なところへとジャンプして処理を行います。書き方は以下のようになります。
switch( 条件 ){
case ラベル:
……実行する処理……
case ラベル:
……実行する処理……
……必要なだけcaseを書く
default:
……どれにも当てはまらない時の処理……
}
switchでは、 ( ) に用意されている内容(条件)を調べ、その値を取得します。そして用意されている case を調べ、その条件で取得した値がラベルとして用意されているものがあるか調べていきます。もし、同じ値のラベルがあったら、その case にジャンプして処理を実行します。全く同じものがなかった場合には、最後にある default にジャンプします。ただし、この default はオプションであり、記述しなくても構いません。その場合は、何も実行せずに次へと進みます。
case につけられるラベルは、数値や文字列など、どのような値でも構いません。ただし、ここに「 case x > 3: 」というように式などを書くことはできません。あくまで記述できるのは値のみです。
Sample
var x = "A";
switch(x){
case "A":
document.write("Aです。");
break;
case "B":
document.write("Bです。");
break;
case "C":
document.write("Cです。");
break;
default:
document.write("その他です。");
}
これは、変数 x の値をチェックして分岐をする例です。 x の値を "A" 、 "B" 、 "C" 、 "D" ……といろいろ替えて試してみましょう。
ここでは、 switch(x)
で変数 x の値をチェックし、その値がラベルに設定されている case
を検索します。そして、同じ値のラベルが見つかれば、その case
にジャンプします。見つからなければ default:
にジャンプします。
ここでは、各 case
の処理の最後に「 break;
」という文がありますね。これは、「処理を中断し、この構文を抜ける」という指示です。switchの働きは、ただ単に「 case
にジャンプする」と言うだけであり、その case
部分を実行したら戻る、と言うような機能はありません。ですから、実行後、構文を抜け出す処理をきちんと用意しておく必要があります。