[javascript]자바스크립트 switch문

rondido·2022년 8월 29일
0

Javascript

목록 보기
9/21

switch

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

문법

  • swith 문은 하나 이상의 case문으로 구성 대개 default도 있지만, 이는 필수는 아님

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

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

  default:
    ...
    [break]
}

  • 변수 x의 값과 첫 번째 case문의 값 'value1'를 일치 비교한 후, 두 번째 case문의 값 'value2'와 비교합니다. 이런 과정은 계속 이어집니다.
  • case문에서 변수 x의 값과 일치하는 값을 찾으면 해당 case 문의 아래 코드가 실행 됩니다. 이때, break문을 만나거나 switch 문이 끝나면 코드의 실행은 멈춥니다.
  • 값과 일치하는 case문이 없다면, default문 아래의 코드가 실행

let a = 2 + 2;

switch (a) {
  case 3:
    console.log( '비교하려는 값보다 작습니다.' );
    break;
  case 4:
    console.log( '비교하려는 값과 일치합니다.' );
    break;
  case 5:
    console.log( '비교하려는 값보다 큽니다.' );
    break;
  default:
    console.log( "어떤 값인지 파악이 되지 않습니다." );
}
  • switch 문은 a의 값인 4와 첫 번재 case문의 값인 3을 비교합니다. 두 값은 같지 않기 때문에 다음 case문으로 넘어갑니다.
  • a와 그다음 case문의 값인 4는 일치합니다. 따라서 break문을 만날 때까지 case 4 아래의 코드가 실행
  • case문 안에 break문이 없으면 조건에 부합하는지 여부를 따지지 않고 이어지는 case문을 실행

let a = 2 + 2;

switch (a) {
  case 3:
    console.log( '비교하려는 값보다 작습니다.' );
  case 4:
    console.log( '비교하려는 값과 일치합니다.' );
  case 5:
    console.log( '비교하려는 값보다 큽니다.' );
  default:
    console.log( "어떤 값인지 파악이 되지 않습니다." );
}

  • break문이 없으면 아래 3개의 console문이 실행됩니다.
    console.log( '비교하려는 값과 일치합니다.' );
    console.log( '비교하려는 값보다 큽니다.' );
    console.log( "어떤 값인지 파악이 되지 않습니다." );

여러 개의 'case'문 묶기

  • 코드가 같은 case문은 한데 묶을 수 있습니다.
  • case 3과 case 5에서 실행하려는 코드가 같은 경우에 대한 예시

let a = 3;

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

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

  default:
    onsole.log('계산 결과가 이상하네요.');
}
  • case 3과 case5는 동일한 메시지 출력
  • switch/case문에서 break문이 없는 경우엔 조건에 상관없이 다음 case문이 실행되는 부작용이 발생합니다. 위 예시에서 case 3이 참인 경우엔 (*)로 표시한 줄 아래의 코드가 실행되는데, 그 아래 줄엔 case 5가 있고 break문도 없기 때문에 12번째 줄의 break문을 만날 때까지 코드는 계속 실행됩니다.

자료형의 중요성

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

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

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

  • 입력 받은 값의 자료형에 따라서 case가 실행되거나 실행되지 않을 수 있습니다. promt는 문자열로 반환 하기 때문에 case 3은 숫자형 3이므로 실행 되지 않고 default문이 실행 됩니다.

위 내용은 javascript.info 사이트에서 공부한 내용 정리
자세한 내용은 아래 링크를 참고하세요
https://ko.javascript.info/switch

profile
개발 옆차기

0개의 댓글