소개
조건문은 모든 프로그래밍 언어에서 가장 중요한 제어 흐름 중 하나입니다. 조건문은 특정 조건에 따라 실행 동작을 결정하는 데 사용됩니다. Javascript, 조건부 블록은 if, else if, else, 그리고 switch 문을 사용하여 작성할 수 있습니다.
The switch 문은 표현식의 가능한 결과에 대해 결정을 내림으로써 제어 흐름을 쉽게 읽을 수 있도록 만듭니다. 일치하는 사용 사례에 따라 하나 이상의 코드 블록이 실행될 수 있습니다. switch 제어는 else if 문과 유사합니다. 하지만 switch 문은 구문 면에서 가독성이 더 좋습니다. 또한 여러 가지 가능한 결과가 있는 시나리오에 이상적입니다.
이 튜토리얼에서는 우리는 Javascript의 switch 문에 초점을 맞추고 이를 구현하여 복잡한 제어 구조를 구축해 보겠습니다. 또한 switch 블록 내에서 제어 흐름을 지시하기 위해 break , case, 그리고 default 문을 사용하는 방법을 배울 것입니다..
Switch 문 사용하기
The switch 문은 변수의 값을 가능한 표현식과 비교하여 작동합니다. 그런 다음 결과와 일치하는 코드 블록을 실행합니다. switch 문은 if 문과 크게 다르지 않습니다. 간단히 말해, switch 문의 구문은 다음과 같이 작성됩니다:
|
1 2 |
switch() { } |
다음은 switch 문의 예입니다. 이 문에는 두 개의 케이스 또는 두 개의 가능한 결과와 함께 default 키워드로 지정된 대체 옵션이 있습니다. 이 대체 옵션은 실행이 완료되거나 일치하는 케이스를 찾지 못했을 때 실행됩니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // 표현식이 case x와 일치할 때 이 코드 블록을 실행합니다 break; case y: // 표현식이 case y와 일치할 때 이 코드 블록을 실행합니다 break; default: // 기본 블록 } |
위의 코드는 다음과 같이 실행됩니다:
-
먼저, 표현식이 평가됩니다.
-
다음으로, 표현식의 결과가 case x와 일치하는지 확인합니다. 값이 일치하면 case x 아래의 코드 블록이 실행됩니다.
-
표현식이 case x와 일치하지 않으면, case y와 일치하는지 확인합니다. 일치하는 항목을 찾으면 case y 코드가 실행됩니다.
-
마지막으로, case x와 case y 모두 일치하지 않으면, default 코드가 실행되고 제어가 switch 블록 밖으로 이동합니다.
작동 예제
To understand the switch 문을 이해하기 위해 작동하는 예제를 살펴보겠습니다. 우리는 Javascript의 getDay() 메서드를 Date 객체에서 사용하여 현재 날짜의 요일 값을 추출할 것입니다. 이 값은 숫자이며, 은 일요일을 나타내고, 6은 토요일을 나타냅니다. 우리는 이 값을 평가하여 어떤 요일인지 결정할 것입니다:
|
1 |
const day = new Date().getDay(); |
다음으로, 이 값을 switch 문으로 보냅니다. switch 문은 위에서 아래로 실행되면서 케이스와 일치하는지 확인하여 어떤 요일인지 결정합니다. 일치하는 케이스를 찾으면 break 명령이 switch 블록이 문을 계속 평가하는 것을 중단합니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// 현재 요일을 변수로 설정합니다. 0은 일요일, 6은 토요일입니다. const day = new Date().getDay(); switch (day) { case 0: console.log("일요일입니다"); break; case 1: console.log("월요일입니다!"); break; case 2: console.log("화요일입니다."); break; case 3: console.log("벌써 수요일입니다!"); break; case 4: console.log("목요일입니다"); break; case 5: console.log("즐거운 금요일입니다!"); break; case 6: console.log("토요일입니다!"); break; default: console.log("일치하는 케이스가 없습니다") } |
Depending on the value returned from the getDate() 메서드에서 반환된 값에 따라, 위에서부터 차례대로 케이스와 비교됩니다. 출력은 코드를 실행한 요일에 따라 달라집니다. 일치하는 케이스가 없을 때 이 시나리오를 처리할 수 있도록 default 코드 블록이 배치되어 있습니다. 하지만 이 코드에서는 요일의 수가 유한하기 때문에 default가 호출되지 않습니다.
The break 문은 케이스가 일치하면 더 이상 다른 케이스와 비교하지 않고 제어 흐름이 switch 문을 빠져나오도록 합니다. 이를 통해 프로그램이 더 효율적이고 빨라집니다.
Switch문에서 범위 테스트하기
지금까지는 매우 간단한 사용 사례를 살펴보았습니다. 하지만 단일 값이 아닌 값의 범위를 대상으로 테스트해야 할 때가 있습니다. 표현식을 true로 설정하고 각 case 문 내에서 연산을 수행하면 이 작업을 수행할 수 있습니다.
예제를 통해 이 사용 사례를 살펴보겠습니다. 숫자를 입력받아 아래 분류 기준에 따라 학점으로 변환해 보겠습니다.
-
90점 이상은 A
-
80점부터 89점까지는 B
-
70점부터 79점까지는 C
-
60점부터 69점까지는 D
-
59점 이하는 F
이 조건들을 switch 문으로 작성해 보겠습니다. 아래는 이를 위한 코드입니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// 학생의 성적 const grade = 87; switch (true) { // 점수가 90점 이상인 경우 case grade >= 90: console.log("A"); break; // 점수가 80점 이상인 경우 case grade >= 80: console.log("B"); break; // 점수가 70점 이상인 경우 case grade >= 70: console.log("C"); break; // 점수가 60점 이상인 경우 case grade >= 60: console.log("D"); break; // 59점 이하는 낙제 default: console.log("F"); } |
위의 코드 예제와 달리, 여기서는 괄호 안의 표현식을 true로 설정했습니다. 따라서 true 값과 일치하는 case 문이 실행됩니다. 마치 else if 문과 같이, 지정된 값과 일치하는 첫 번째 문이 실행됩니다. 여기서 출력은 B가 됩니다. 비록 C 및 D 역시 표현식과 일치하더라도 말이죠.
다중 Case
동일한 코드 블록을 가진 여러 개의 case를 두고 싶다면 이 또한 가능합니다. 이는 또는 조건과 유사합니다. if 문에서와 같이 말이죠. 이러한 시나리오에서는 각 코드 블록에 대해 둘 이상의 case를 지정할 수 있습니다.
이 개념을 설명하기 위해 연중 월을 예로 들어 보겠습니다. 이 월들을 일 년의 계절로 분류할 것입니다. 먼저, 새로운 Date() 메서드를 사용하여 현재 월에 해당하는 숫자를 찾고, 이를 month 변수에 적용합니다. Date().getMonth() 메서드는 0 부터 11까지의 숫자를 반환하며, 0은 1월, 11은 12월에 해당합니다.
아래 사양을 사용하여 분류할 것입니다:
-
겨울: 1월, 2월, 3월
-
봄: 4월, 5월, 6월
-
여름: 7월, 8월, 9월
-
가을: 10월, 11월, 12월
코드는 다음과 같습니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const month = new Date().getMonth(); switch (month) { // 1월, 2월, 3월 case 0: case 1: case 2: console.log("Winter"); break; // 4월, 5월, 6월 case 3: case 4: case 5: console.log("Spring"); break; // 7월, 8월, 9월 case 6: case 7: case 8: console.log("Summer"); break; // 10월, 11월, 12월 case 9: case 10: case 11: console.log("Autumn"); break; default: console.log("Something went wrong."); } |
위 코드가 실행되면 월에 따라 계절의 이름이 콘솔에 출력됩니다.
결론
이 튜토리얼에서는 JavaScript 애플리케이션에서 switch 문을 사용하는 방법을 설명했습니다. 또한 switch 문을 default 키워드와 함께 범위 및 다중 case에 적용해 보았습니다. JavaScript에 대해 더 자세히 알아보고 싶다면 다음 튜토리얼을 확인해 보세요:
- JavaScript 작업하기: 객체(Object)란 무엇인가요?
- JavaScript: 문자열을 인덱싱, 분할 및 조작하는 방법에 대한 튜토리얼
- JavaScript 작업하기: 클래스(Class)의 작동 방식
즐거운 코딩 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.