switch ステートメント
指定した式の値がラベルと一致したときに 1 つ以上のステートメントを実行する機能を提供します。
switch (expression) {
case label1 :
[statementlist1]
[break;]
[ ...
[ case labelN :
[statementlistN]
[break;] ] ]
[ default :
[statementlistDefault]]
}
引数
expression
必ず指定します。 評価される式を指定します。label1, ..., labelN
必ず指定します。 expression に指定した式と一致するかどうかを調べられる識別子を指定します。 label === expression が成立すると、コロンの直後のステートメント リストの実行が開始され、break ステートメント (省略可能です) が見つかった箇所か、switch ステートメントの最後まで実行が続行されます。statementlist1, ..., statementlistN, statementlistDefault
省略可能です。 実行する 1 つ以上のステートメントを指定します。
解説
どのラベルの値も式の値と一致しなかった場合に実行するステートメントを指定するには、default 句を使用します。 default 句は、switch コード ブロック内のどこでも記述できます。
label で指定するブロックの数に制限はありません。 式の値がどのラベルの値にも一致せず、default 句を指定していなかった場合は、ステートメントは何も実行されません。
switch ステートメントでの実行の流れは次のようになります。
expression に指定した式が評価され、この式に一致するラベルが見つかるまで、順序どおりにラベルが評価されます。
式と一致するラベルがある場合は、その直後に記述されたステートメント リストが実行されます。
実行は、break ステートメントが実行されるか、switch ステートメントが終了するまで続行されます。 つまり、break ステートメントを記述しない場合は、複数の label ブロックが実行されます。
式と一致するラベルが 1 つもない場合は、default 句へ進みます。 default 句がない場合は、最後の処理へ進みます。
switch コード ブロックの次のステートメントから処理を続行します。
使用例
オブジェクトの型を調べる ASP.NET の例を次に示します。 この例では 1 種類の型しか使用していませんが、他のオブジェクト型に対する関数がどのように機能するかは簡単にわかります。
<%@ language="jscript" %>
<%
var d = new Number();
function MyObjectType(obj : Object) : String {
switch (obj.constructor){
case Date:
return "Object is a Date.";
break;
case Number:
return "Object is a Number.";
break;
case String:
return "Object is a String.";
break;
default:
return "Object is unknown.";
}
}
Response.Write(MyObjectType(d));
%>