이전 장에서와 같이 여러 if...else if 문을 사용하여 여러 분기를 실행할 수 있습니다. 그러나 이것이 항상 최선의 해결책은 아닙니다. 특히 모든 분기가 단일 변수 값에 의존하는 경우에는 더욱 그렇습니다.
JavaScript 1.2부터는 if...else if 문을 반복적으로 사용하는 대신 if...else if 문을 더 효율적으로 수행하는 switch 문을 사용하여 이 상황을 정확하게 처리하는 데 사용할 수 있습니다.
문법
switch 문의 기본 구문은 해당 표현식의 값을 기반으로 여러 가지 다른 명령문을 평가하고 계산하는 표현식을 제공합니다. 인터프리터는 일치하는 항목을 찾을 때까지 각 사례에서 표현식 값을 확인합니다. 일치하는 항목이 없으면 기본 조건이 사용됩니다.
switch (expression) { case condition 1: statement(s) break; case condition 2: statement(s) break; ... case condition n: statement(s) break; default: statement(s) }
break 문은 특정 상황에서 인터프리터가 종료되도록 지시합니다. 생략된 경우 인터프리터는 다음 각 경우에 각 명령문을 계속 실행합니다.
break문에 대해서는 루프 제어편에서 설명하겠습니다.
예:
다음 예에서는 기본 while 루프를 보여줍니다.
<script type="text/javascript"> <!-- var grade='A'; document.write("Entering switch block<br />"); switch (grade) { case 'A': document.write("Good job<br />"); break; case 'B': document.write("Pretty good<br />"); break; case 'C': document.write("Passed<br />"); break; case 'D': document.write("Not so good<br />"); break; case 'F': document.write("Failed<br />"); break; default: document.write("Unknown grade<br />") } document.write("Exiting switch block"); //--> </script>
이렇게 하면 다음과 같은 결과가 나타납니다.
Entering switch block Good job Exiting switch block
예:
break 문을 사용하지 않는 경우 다음 상황을 고려하세요.
<script type="text/javascript"> <!-- var grade='A'; document.write("Entering switch block<br />"); switch (grade) { case 'A': document.write("Good job<br />"); case 'B': document.write("Pretty good<br />"); case 'C': document.write("Passed<br />"); case 'D': document.write("Not so good<br />"); case 'F': document.write("Failed<br />"); default: document.write("Unknown grade<br />") } document.write("Exiting switch block"); //--> </script>
이렇게 하면 다음과 같은 결과가 나타납니다.
Entering switch block Good job Pretty good Passed Not so good Failed Unknown grade Exiting switch block