if문을 좀 더 편하게 만들었다고 보면 된다.
let value = 'B'; switch (value) { case 'A': console.log('A'); case 'B': console.log('B'); case 'C': console.log('C'); }
결과 : B, C
switch 옆의 소괄호 조건식의 값이 case의 비교 조건식 값과 일치(==)하면 해당 실행문이 실행된다.
여기서 특이점이 있다.
switch문은 일치하는 case를 발견하면 일치 여부와 상관없이 그 아래 case들도 전부다 실행된다. 그래서 원하는 결과만 얻으려면 수동으로 case에서 빠져나와야하는데, 이때 break문이 사용된다.
let value = 'B'; switch (value) { case 'A': console.log('A'); break; case 'B': console.log('B'); break; case 'C': console.log('C'); break; }
결과 : B
또한, 어떠한 case도 일치하지 않을 때 실행하는 case는 default이다.
switch (value) { case 'A': console.log('A'); break; case 'B': console.log('B'); break; case 'C': console.log('C'); break; default: console.log('아무것도 일치하지 않음'); }
결과 : 아무것도 일치하지 않음
switch문의 case는 else if와 비슷하고, default는 else와 비슷하다고 생각할 수도 있다. 실제로 if 문이 === 연산자만 사용한다면 switch 문으로 쉽게 대체할 수 있다.
if (fruit === '사과') { console.log('사과입니다!'); } else if (fruit === '배') { console.log('배입니다!'); } else if (fruit === '포도') { console.log('포도입니다!'); } else { console.log('뭔지 모르겠습니다!'); }
한 가지 다른 점이 있다면 else는 if나 else if 뒤에만 나오지만, default는 어디에나 위치할 수 있다.
switch (fruit) { default: console.log('뭔지 모르겠습니다!'); break; case '사과': console.log('사과입니다!'); break; case '배': console.log('배입니다!'); break; case '포도': console.log('포도입니다!'); break; }