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 - テキストフィールドの初期値を指定します
戻り値 - 入力された文字列