switch 문
업데이트: 2007년 11월
지정한 식의 값이 레이블과 일치하면 하나 이상의 문을 실행하도록 합니다.
switch (expression) {
case label1 :
[statementlist1]
[break;]
[ ...
[ case labelN :
[statementlistN]
[break;] ] ]
[ default :
[statementlistDefault]]
}
인수
expression
필수적 요소. 계산할 식입니다.label1, ..., labelN
필수적 요소. expression과 일치하는 식별자입니다. label === expression이면 콜론 바로 뒤에 있는 문 목록에서부터 실행하여 선택적 요소인 break 문이나 switch 문의 끝에 올 때까지 계속 실행합니다.statementlist1, ..., statementlistN, statementlistDefault
선택적 요소. 실행할 하나 이상의 문입니다.
설명
default 절을 사용하면 expression과 일치하는 레이블 값이 없을 경우 실행할 문을 제공할 수 있습니다. 이 절은 switch 코드 블록 내의 어디에나 올 수 있습니다.
label 블록은 0개 이상 지정할 수 있습니다. expression 값과 일치하는 label도 없고 default도 제공되지 않으면 어떤 문도 실행되지 않습니다.
switch 문은 다음과 같이 실행됩니다.
일치하는 것을 찾을 때까지 expression을 계산한 후 label을 살펴봅니다.
label 값이 expression과 같으면 동반하고 있는 문 목록을 실행합니다.
break 문을 만나거나 switch 문이 끝날 때까지 실행을 계속합니다. 따라서 break 문을 사용하지 않으면 여러 label 블록이 실행됩니다.
expression과 일치하는 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));
%>