[JS] switch-case와 if문

Yeong·2023년 12월 17일
0

switch-case 문

어떤 대상과 조건값이 일치하는지를 확인하고 그 결과에 따라 다른 동작이 필요할때는 switch문을 활용할 수 있다.

switch (비교할_값){
	case 조건값_1:
    	동작부분; // 비교할_값과 조건값_1이 일치하면 동작 
        break;  // switch문을 빠져나오는 기능 
    case 조건값_2:
    	동작부분;
        break;
    default: 
    	동작부분; // 비교할_값이 모든 조건과 일치하지 않을때 동작할 코드 작성
                   (else와 유사함) 
    } 

예시를 보고 switch문을 직접 작성해보자.

let myChoice = 2; 
switch(myChoice){
  case 1:
  	console.log('연어구이를 선택한 분은 이쪽으로 오시면...') 
    break; 
  case 2: 
  	console.log('소고기를 선택한 분은 이쪽으로 오시면...') 
    break; 
  default: 
  	console.log('세가지 메뉴중에 하나 꼭 골라주세요');
 } 

선택지를 담아둘 변수를 하나 만들고(let myChoice;) 2번을 선택할때는 숫자2를 할당해준다.
변수를 switch문의 비교할 값에 넣어주면 case 2에 해당하는 '소고기를 선택한 분은 이쪽으로 오시면...'이 출력된다.

만약 break를 삭제하고 실행해보면 case1을 제외한 case2부터 모든 동작이 실행되고 값이 출력된다. ('소고기를 선택한 분은 이쪽으로 오시면...' '삼겹살을 선택한 분은 이쪽으로 오시면...' '세가지 메뉴중에 하나 꼭 골라주세요') 조건값과 일치하는 조건을 찾은 다음에는 break문을 만날때까지 모든 동작을 실행하게 된다.
그러므로 break문을 작성해야 안정적인 코드를 만들 수 있다!!

순차적으로 값을 비교하며, 조건이 맞을 때 break가 있다면 그 이후의 비교는 하지 않는다. 즉, switch 구문을 바로 끝낸다!
break가 없다면 조건이 맞아도 그 다음 비교를 계속한다.

if문과 달리 조건식이 정수값, 문자열, Enum 상수 중 하나의 결과가 와야한다.
case 문에는 조건식 판별 결과와 비교할 값을 사용하며 범위 지정이 불가능하고, 값만 사용 가능

위의 switch-case문은 if문으로도 대체할 수 있다.

if (myChoice === 1) {
  console.log('연어구이를 선택한 분은 이쪽으로 오시면...');
} else if (myChoice === 2) {
  console.log('소고기를 선택한 분은 이쪽으로 오시면...');
} else if (myChoice === 3) {
  console.log('삼겹살을 선택한 분은 이쪽으로 오시면...');
} else {
  console.log('세가지 메뉴중에 하나 꼭 골라주세요');
}

위의 두 코드는 동작이 동일하게 일어난다.
그러나 if문의 경우 myChoice를 조건 값과 함께 비교하는 조건식을 매번 작성해야 하는 번거로움이 있다.

if문과 switch문 모두 특정한 조건에 따라 다르게 동작하는 코드를 만들 수 있지만, 어떤 넓은 범위를 만족하는 조건식을 만들 때if문을 활용하는 것이,
특정한 값에 일치하는 조건을 만들 때는 switch-case문이 좀 더 효과적이다.

0개의 댓글