switch 语句
当指定的表达式的值与一个标签匹配时,使一条或多条语句得以执行。
switch (expression) {
case label1 :
[statementlist1]
[break;]
[ ...
[ case labelN :
[statementlistN]
[break;] ] ]
[ default :
[statementlistDefault]]
}
参数
表达式
必选。 要计算的表达式。label1, ..., labelN
必选。 要与表达式 相匹配的标识符。 如果标记 === 表达式,则从冒号后面紧接的语句列表处开始执行,并继续此执行,直到遇到一个可选 break 语句,或到达 switch 语句的末尾为止。statementlist1, ..., statementlistN, statementlistDefault
可选。 要被执行的一个或多个语句。
备注
使用 default 子句来提供一个语句,该语句只在没有任何一个标签值与表达式 相匹配时才被执行。 它可以出现在 switch 代码块内的任何地方。
可以指定零个或多个标记 块。 如果没有标记 与表达式 的值匹配,并且没有提供 default 子句,则不执行任何语句。
switch 语句将按如下流程执行:
计算表达式 的值并依次查看标记,直到找到一个匹配。
如果标记 的值等于表达式,则执行其相伴的语句列表。
继续执行,直到遇到一个 break 语句,或直到 switch 语句结束。 这意味着,如果没有使用 break 语句,则将执行多个 label 块。
如果没有标记 等于表达式,则跳转到 default 子句。 如果没有 default 子句,则转到最后一步。
在 switch 代码块末尾之后的语句处将继续执行过程。
示例
下面的 ASP.NET 示例将测试一个对象的类型。 在此例中仅使用了一种类型,但您应该可以清楚地看出该函数是如何使用其他对象类型的。
<%@ 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));
%>