JavaScript/Basics

[JavaScript] switch문

Sonny Cucumber 2022. 3. 10. 14:50

여러개의 if문은 switch문으로 바꿀 수 있는데 이러한 비교법은

특정 변수를 다양한 상황에서 비교할 수 있게하여 비교 상황을 잘 설명한다는 장점 있음

문법

switch문은 하나 이상의 case가 존재. 대개는 default 도 있지만 필수는 아니다

switch(x) {
  case 'value1':  // if (x === 'value1')
    ...
    [break]

  case 'value2':  // if (x === 'value2')
    ...
    [break]

  default:
    ...
    [break]
}

윗쪽 케이스부터 x와 케이스의 값을 비교하면서 내려오고 해당하는게 있다면 본문을 실행시켜주고
break를 만나면 실행이 종료 일치하는 케이스가 없다면 default문 아래의 코드가 실행 (디폴트가 있다면)

여러 개의 'case'문 묶기

코드가 같은 case문은 한데 묶을 수 있습니다.

let a = 3;

switch (a) {
  case 4:
    alert('계산이 맞습니다!');
    break;

  case 3: // (*) 두 case문을 묶음
  case 5:
    alert('계산이 틀립니다!');
    alert("수학 수업을 다시 들어보는걸 권유 드립니다.");
    break;

  default:
    alert('계산 결과가 이상하네요.');
}

자료형의 중요성

스위치 문은 일치 비교로 조건을 확인하는데 이 뜻은 즉 값과 케이스 문의

타입과 값이 같아야 해당 케이스문이 실행된다.

let arg = prompt("값을 입력해주세요.");
switch (arg) {
  case '0':
  case '1':
    alert( '0이나 1을 입력하셨습니다.' );
    break;

  case '2':
    alert( '2를 입력하셨습니다.' );
    break;

  case 3:
    alert( '이 코드는 절대 실행되지 않습니다!' );
    break;
  default:
    alert( '알 수 없는 값을 입력하셨습니다.' );
}

케이스 3의 본문은 절대 실행되지 않는데 prompt 함수가

입력한 값을 string 즉 문자열로 변환하기에 일치할 수가 없다.