switch文制御


複数選択構造

if による制御は、プログラムの流れを分岐させることができました
if - else を繰り返し行うことで、複雑な多分岐構造を作成することができます
しかし、一つの値を判定し複数の分岐を行う場合、if では多少不便です

そこで、switch ステートメントを用いることで
単一の値で複数の分岐を可能とします
switch (expression) {
   case label :
       statementlist
   case label :
       statementlist
   ...
   default :
       statementlist
}
expression に評価する式を指定し label に調べる識別子を指定します
expression == label が成立した時に statementlist を実行します
statementlist は実行する1つ以上のステートメントを指定します

全ての label と一致しなかった場合は default の後のステートメントを実行します
default は省略することが可能です

注意しなければならないのですが、途中の case で一致してステートメントを実行すると
そのブロック以下の全てのステートメントを実行してしまいます
そのため、一般的には途中で switch から抜け出すための break を指定します
このステートメントは、switch や後記するループから抜け出すための専用ステートメントです

break [label];

label にはステートメントの識別子を指定することができます
ステートメントの識別子については、後ほど詳しく説明しますが
今回のような、フロー制御ステートメントでは識別子を使用する必要はありません

さて、この制御文を試すためにユーザーに文字列の入力を促すprompt()メソッドを紹介します
これも、alert() や confirm() 同様にブラウザがサポートするメソッドです

prompt(message, [inputDefault])

message はダイアログに表示するユーザーへのメッセージです
inputDefault は、インプット用のテキストフィールドに表示するデフォルトの文字列です
inputDefault は省略可能で、省略した場合は空白になります
このメソッドは、ユーザーが入力した何らかの値が返ります
var input = parseInt(prompt("0〜3までの数を入力してください" , 0));

switch(input) {
case 0:
	alert("Kitty on your lap");
	break;
case 1:
	alert("Tokyo mew mew");
	break;
case 2:
	alert("Nekoneko Zoo");
	break;
case 3:
	alert("Magical nyan nyan TARUTO");
	break;
default:
	alert("適切な数を入力してください");
}


このプログラムでは、まず input 変数にユーザーから入力された値を格納します
このとき、parseInt() メソッドに prompt() メソッドの戻り値を渡します
入力された値を、数値に変換してから switch ステートメントで調べます

入力された値が 0〜3 であれば、それぞれに割り当てられたステートメントが実行されます
各ステートメントの終端には break 文をつけることを忘れないで下さい
もし入力された値が数値以外なら input の内容は NaN であるため、default が実行されます


switch

switch (expression) {
   case label :
       statementlist
   case label :
       statementlist
   ...
   default :
       statementlist
}
一つの式を評価して、その値を同じラベルのステートメントを実行します
default は省略可能で、すべての label に当てはまらなかったときに実行します

expression - 評価する式を指定します
label - expression と等価比較する値を指定します
statementlist - 実行する一つ以上のステートメントを指定します

break [label];

現在のループ、またはステートメントを終了します

label - ステートメントの名前を指定します。省略可能

prompt(message, [inputDefault])

ユーザーが入力できるテキストフィールドを表示し
入力された文字列を返します

message - ダイアログに表示する文字列を指定します
inputDefault - テキストフィールドの初期値を指定します

戻り値 - 入力された文字列



前のページへ戻る次のページへ