자바스크립트 스위치( switch ) 조건문
switch 문
문법은 하나 이상의 case 블록과 선택적 기본값을 가진다.
switch(x) {
case 'value1': //if x 가 'value1' 이면 실행
...
[break]
case 'value2': //if x 가 'value2' 이면 실행
...
[break]
default:
...
[break]
}
switch 문의 패턴은 ('value1') case 'value1'과 같으면 case : 에서 시작하여 가장 가까운 break까지 실행한다.
만약 case에 일치하는 값이 없다면 default 코드가 실행된다. (default 가 존재할 경우)
예제
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
break;
case 4:
alert( 'Exactly!' );
break;
case 5:
alert( 'Too large' );
break;
default:
alert( "I don't know such values" );
}
a 의 값은 4이기 때문에 case 4: 와 brake 사이의 alert( 'Exactly!' ); 가 실행이 된다.
break 가 없는 예
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
case 4:
alert( 'Exactly!' );
case 5:
alert( 'Too big' );
default:
alert( "I don't know such values" );
}
case 4: 이후의 case들이 모두 실행된다. 조건이 맞으면 break 문을 사용하여 빠져나와야 한다.
switch/case 는 형 변환 또는 연산자를 이용해 값을 변경할 수 있습니다.
let a = "1";
let b = 0;
switch (+a) {
case b + 1:
alert("this runs, because +a is 1, exactly equals b+1");
break;
default:
alert("this doesn't run");
}
a의 문자열 변수가 앞에 + 를 붙이면 Number(a) 즉 숫자로 형 변환을 합니다.
그 이후 숫자 0 + 1 은 1 이므로 case b+1 : 이 실행됩니다.
case의 그룹화
복수의 조건일 때 case를 그룹화할 수 있습니다.
let a = 3 or 5;
switch (a) {
case 4:
alert('Right!');
break;
case 3: // (*) grouped two cases
case 5:
alert('Wrong!');
alert("Why don't you take a math class?");
break;
default:
alert('The result is strange. Really.');
}
a 가 3 이어도 alert('Wrong!'); alert("Why don't you take a math class?"); 이 실행되고 값이 5여도 같은 내용이 실행됩니다.
Type을 확인하세요
조건의 비교는 동일 유형(Type) 이어야 합니다.
let arg = prompt("Enter a value?");
switch (arg) {
case '0':
case '1':
alert( 'One or zero' );
break;
case '2':
alert( 'Two' );
break;
case 3:
alert( 'Never executes!' );
break;
default:
alert( 'An unknown value' );
}
자바스크립트의 prompt 창의 반환 값은 문자(String)입니다.
그렇기 때문에 3을 입력하면 case 3 == 숫자 이기 때문에 prompt 입력창의 3은 서로 다른 유형(Type)이기 때문에
default 블록 안의 'An unknown value'가 실행됩니다.
참고 : https://javascript.info/switch
The "switch" statement
javascript.info