자바스크립트 switch문

kiki97 ㅣ 2022. 8. 17. 19:33

반응형

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 아래의 코드는 절대 실행되지 않는다.

 

반응형