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