switch문

김하은·2023년 4월 26일
0

복수의 if조건문을 switch문으로 바꿀 수 있다.

switch문을 사용한 비교법은 특정 변수를 다양한 상황에서 비교할 수 있게 해준다고 정리되어있다.
심지어 코드 자체도 비교상황을 잘 설명하기도 한다는 장점도 있다는것이다.

switch문은 하나 이상의 case문으로 구성된다.
default문도 있으나 필수는 아니다.

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

  [break]

}

변수 x값과 첫번째 case의값 value1이 일치한지 비교한 후 두번째 case문의 값 'value2'와 비교를 한다. 이 과정은 계속 이어진다.

case문에서 x의 값과 일치하는값을 찾게되면 해당 case문의 아래의 코드가 실행된다. 이때 break를 만나거나 switch문이 끝난다면 코드 실행이 멈춘다.

값과 일치하는 case문이 없다면 switch문이 종료되거나 default문이 있는 경우에는 default문 아래의 코드가 실행된다.

let a = 2 + 2;

switch(a){
	case 3:
    alert("비교하려는 값보다 작다");
    break;

  case 4:
   alert("비교하려는 값과 일치");
   break;

  case 5:
   alert("비교하려는 값보다 크다");
   break;  

   default:
   alert("어떤 값인지 파악되지 않는다");
 }

switch문은 a의 값인 4와 첫번째 case문의 값인 3을 비교한다.
두 값은 같지 않기에 다음 case로 넘어간다.
a와 두번째 case문의 값과는 일치한다. 따라서 break를 만나기 전까지의 case문 아래의 코드가 실행된다. case문 안에 break가 없다면 조건에 부합하는지 여부를 따지지 않고 이어지는 case문을 실행한다.
따라서 조건을 확인하려할 때에는, 반드시 case문 안에는 break를 꼭 써주어야한다.

switch문과 case문은 모든 형태의 표현식을 인수로 받는다.

let a ="1";
let b = 0;

switch(+a){
  case b+1:
  alert("표현식 +a는 1, 표현식 b+1은 1이므로 이 코드가 실행된다");
  break

  default:
  alert("이 코드는 실행되지 않습니다.");
}

표현식 +a를 평가하면 1이 된다.
이 값은 case의 표현식 b + 1과 일치하므로 첫번째 case문 아래의 코드가 실행된다.

여러개의 case를 묶을수도 있다.
case 3:
case 5:
alert("계산이 된다");
alert("수학다시");
break;

이런식으로 묶어서 작성할 수도 있다.
case 3과 case 5는 동일한 메세지를 출력한다.
case 3의 경우에 해당 문에 break가 없기에 조건에 관계없이 다음 case문이 break를 만날때까지 계속 실행된다.

다음의 if문을 switch문으로 변경해보기

let a = +prompt('a?', '');

if (a == 0) {
  alert( 0 );
}
if (a == 1) {
  alert( 1 );
}

if (a == 2 || a == 3) {
  alert( '2,3' );
}
let a = +prompt('a?','');

switch(a){
	case 0:
    alert(0);
    break;

    case 1:
    alert(1);
    break;

    case 2:
    case 3:P
    alert('2,3');
    break;
 }   

0개의 댓글