반응형
switch문
switch문은 하나 이상의 case문으로 구성된다. 대개 default문도 있지만, 필수는 아니다.
switch문은 같다 라는 조건만 설정할 수있다.
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
- 변수 x의 값을 첫 번째 case문의 값과 일치한 지 비교한 뒤, 두 번째 case문 값과 비교한다.
이러한 과정이 계속 이어진다. - case문에서 변수x의 값과 일치하는 값을 찾으면 해당 case문의 아래 코드가 실행되고,
break문을 만나거나 swich문이 끝나면 코드의 실행은 멈춘다. - 값과 일치하는 case문이 없다면, default문 아래의 코드가 실행된다.(default 문이 있는 경우)
let a = 2 + 2;
switch (a) {
case 3:
alert( '비교하려는 값보다 작습니다.' );
break;
case 4:
alert( '비교하려는 값과 일치합니다.' );
break;
case 5:
alert( '비교하려는 값보다 큽니다.' );
break;
default:
alert( "어떤 값인지 파악이 되지 않습니다." );
}
- case 4 아래의 코드가 실행된다.
- case문 안에 break문이 없으면 조건에 부합하는지 여부를 따지지 않고 이어지는 case문을 실행한다.
즉, case4에 break가 없다면 case4 아래의 모든 코드들이 실행된다.
여러 개의 "case"문 묶기
코드가 같은 case문은 한데 묶을 수 있다.
let a = 3;
switch (a) {
case 4:
alert('계산이 맞습니다!');
break;
case 3: // (*) 두 case문을 묶음
case 5:
alert('계산이 틀립니다!');
alert("수학 수업을 다시 들어보는걸 권유 드립니다.");
break;
default:
alert('계산 결과가 이상하네요.');
}
자료형의 중요성
switch문은 일치 비교로 조건을 확인한다. 비교하려는 값과 case문의 값의 자료형과 값이 같아야 해당 case문이 실행된다.
let arg = prompt("값을 입력해주세요.");
switch (arg) {
case '0':
case '1':
alert( '0이나 1을 입력하셨습니다.' );
break;
case '2':
alert( '2를 입력하셨습니다.' );
break;
case 3:
alert( '이 코드는 절대 실행되지 않습니다!' );
break;
default:
alert( '알 수 없는 값을 입력하셨습니다.' );
}
- prompt() 함수는 문자형을 반환함으로 형 자체가 다르기 때문에 case 3 아래의 코드는 절대 실행되지 않는다.
반응형