JavaScript 2.14

1 minute read

switch문

  • 복수의 if 조건문은 switch 문으로 바꿀 수 있다.
  • switch문을 사용한 비교법은 특정 변수를 다양한 상황에서 비교할 수 있게 해준다.

문법

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

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

  default:
    ...
    [break]
}
  • 변수 x의 값과 case 문의 값 value1을 일치 비교한 후 두번째 case 문의 값 value2와 비교하는 것이 이어진다.
  • 일치하는 값을 찾으면 해당 case 문의 아래의 코드가 실행된다.
  • 이때 break 문을 만나거나 switch 문이 끝나면 코드의 실행은 멈춘다.
  • 값과 일치하는 case 문이 없다면 default 문 아래의 코드가 실행된다.
  • Case 문 안에 break 문이 없으면 조건에 부합하는지 여부를 따지지 않고 이어지는 case문을 실행한다.

  • Switch/case 문의 인수엔 어떤 표현식이든 올 수 있다.

여러 개의 case 문 묶기

  • 코드가 같은 case 문은 한데 묶을 수 있다.
let a = 3;

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

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

  default:
    alert('계산 결과가 이상하네요.');
}
  • Case 3과 case 5는 동일한 메세지를 보여준다.
  • Case 3이 참인 경우 (*)로 표시한 줄 아래의 코드가 실행되고 그 아래의 break문을 만날 때까지 코드가 실행된다.

자료형의 중요성

  • 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( '알 수 없는 값을 입력하셨습니다.' );
}
  • 0이나 1을 입력한 경우 첫번째 alert문이 실행된다.
  • 2를 입력한 경우에는 두번째 alert문이 실행된다.
  • 3을 입력하였더라도 세번째 alert문은 실행되지 않는다.
    • Prompt 함수는 사용자가 입력 필드에 기재한 값을 문자열로 변환해 반환하기 때문에 숫자 3을 입력하더라도 prompt 함수가 문자열 3을 반환한다.
    • 그런데 세번째 case 문에서는 사용자가 입력한 값과 숫자형 3을 비교하므로 형 자체가 다르기 때문에 case 3 아래의 코드는 실행되지 않고 default 문이 실행된다.

Categories:

Updated: