if 문을 중첩해서 사용하게 되면 가독성이 떨어지게 된다. 이럴경우 Switch 문을 사용한 비교법으로 간단하게 작성해 볼 수 있다.
다만
<, >, >=, <=, !==
와 같은 비교연산자는 Switch 문에서 사용할 수 없다.출처 : MDN
switch (expression) {
case value1:
//Statements executed when the
//result of expression matches value1
[break;]
case value2:
//Statements executed when the
//result of expression matches value2
[break;]
...
case valueN:
//Statements executed when the
//result of expression matches valueN
[break;]
[default:
//Statements executed when none of
//the values match the value of the expression
[break;]]
}
switch
의 파라미터로 들어온 expression
과 case
의 valueN
이 일치하면 switch
문 전체가 끝나거나 break
를 마주칠 때까지 case
문 내부가 실행된다.break
는 선택적으로 사용할 수 있다. break
를 사용하지 않을 경우, 첫 번째로 일치한 case
절 이후switch
문 전체가 끝나거나break
를 만날 때 까지 모든 case
절이 실행된다.(조건이 맞는지와는 상관없이)default
절은 선택적으로 사용할 수 있다.case
의 valueN
이 expression
과 일치하지 않으면 defalut
절이 실행된다.//기본형
let expr = 1;
switch (expr) {
case 0:
alert( '비교하려는 값보다 작습니다.' );
break;
case 1:
alert( '비교하려는 값과 일치합니다.' );
break;
case 2:
alert( '비교하려는 값보다 큽니다.' );
break;
default:
alert( "어떤 값인지 파악이 되지 않습니다." );
}
//case 1이 실행될 것이다.
//break가 생략되었을 시
let expr = 1;
switch (expr) {
case 0:
alert( '비교하려는 값보다 작습니다.' );
break;
case 1:
alert( '비교하려는 값과 일치합니다.' );
//case 1의 break를 삭제합니다.
case 2:
alert( '비교하려는 값보다 큽니다.' );
//case 2의 break를 삭제합니다.
default:
alert( "어떤 값인지 파악이 되지 않습니다." );
}
//case 1 이후로 break문을 만나거나 switch문이 끝날 때까지 모두 실행되므로
//case 1과 case 2, default 절이 실행될 것이다.
//case들을 묶고 싶을 경우
let expr = 1;
switch (expr) {
case 0:
alert( '비교하려는 값보다 작습니다.' );
break;
case 1:
//case 1의 실행문을 삭제합니다.
case 2:
alert( '비교하려는 값보다 큽니다.' );
break;
default:
alert( "어떤 값인지 파악이 되지 않습니다." );
}
//expr이 1이나 2일 경우
//case 1(빈 절)과 case 2가 실행될 것이다.
//일치하는 case 절이 없을 경우
let expr = 1111;
switch (expr) {
case 0:
alert( '비교하려는 값보다 작습니다.' );
break;
case 1:
alert( '비교하려는 값과 일치합니다.' );
break;
case 2:
alert( '비교하려는 값보다 큽니다.' );
break;
default:
alert( "어떤 값인지 파악이 되지 않습니다." );
}
//어떤 case도 expr과 일치하지 않으므로
//default 절이 실행 될 것이다.
//만약 defualut 절이 존재하지 않으면
//아무 것도 실행되지 않을 것이다.