September 1, 2021
복수의 if
조건문은 switch
문으로 바꿀 수 있습니다.
switch
문을 사용한 비교법은 특정 변수를 다양한 상황에서 비교할 수 있게 해줍니다. 코드 자체가 비교 상황을 잘 설명한다는 장점도 있습니다.
코드가 같은 case
문은 한데 묶을 수 있습니다.
case 3
과 case 5
에서 실행하려는 코드가 같은 경우에 대한 예시를 살펴봅시다.
let a = 3;
switch (a) {
case 4:
alert('계산이 맞습니다!');
break;
*case 3: // (*) 두 case문을 묶음
case 5:
alert('계산이 틀립니다!');
alert("수학 수업을 다시 들어보는걸 권유 드립니다.");
break;*default:
alert('계산 결과가 이상하네요.');
}
case 3
과 case 5
는 동일한 메시지를 보여줍니다.
switch/case
문에서 break
문이 없는 경우엔 조건에 상관없이 다음 case
문이 실행되는 부작용이 발생합니다. 위 예시에서 case 3
이 참인 경우엔 (*)
로 표시한 줄 아래의 코드가 실행되는데, 그 아래 줄엔 case 5
가 있고 break
문도 없기 때문에 12번째 줄의 break
문을 만날 때까지 코드는 계속 실행됩니다.
switch문은 일치 비교로 조건을 확인합니다. 비교하려는 값과 case
문의 값의 형과 값이 같아야 해당 case
문이 실행됩니다.
예시를 통해 switch문에서 자료형이 얼마나 중요한지 살펴보도록 합시다.
let arg = prompt("값을 입력해주세요.");
switch (arg) {
case '0':
case '1':
alert( '0이나 1을 입력하셨습니다.' );
break;
case '2':
alert( '2를 입력하셨습니다.' );
break;
case 3:
alert( '이 코드는 절대 실행되지 않습니다!' );
break;
default:
alert( '알 수 없는 값을 입력하셨습니다.' );
}
0
이나 1
을 입력한 경우엔 첫 번째 alert
문이 실행됩니다.2
를 입력한 경우엔 두 번째 alert
문이 실행됩니다.3
을 입력하였더라도 세 번째 alert
문은 실행되지 않습니다. 앞서 배운 바와 같이 prompt
함수는 사용자가 입력 필드에 기재한 값을 문자열로 변환해 반환하기 때문에 숫자 3
을 입력하더라도 prompt
함수는 문자열 '3'
을 반환합니다. 그런데 세 번째 case
문에선 사용자가 입력한 값과 숫자형 3을 비교하므로, 형 자체가 다르기 때문에 case 3
아래의 코드는 절대 실행되지 않습니다. 대신 default
문이 실행됩니다.