当指定的表达式的值与一个标签匹配时,使一条或多条语句得以执行。
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)); %>要求请参见
参考
break 语句if...else 语句