본문 바로가기
CS/로직

[ switch문 ] 다양한 케이스를 처리할 수 있는, switch문 정리

by 푸르 2021. 7. 5.

공부하게 된 이유?

이전에 배웠는데, 실제로 활용하려고 하니 헷갈리는 부분이 있어,

부족한 부분을 보완하려고 본 포스팅을 작성하게 됐습니다.

 


if else로 케이스를 나누기엔 처리해야 할 케이스가 많을 경우,

switch문을 이용할 수 있습니다. 

 

계산기를 생각해봅시다. 

계산기는 + - * / % 등

각 연산자에 따라 다양한 케이스를 처리해야하는데, 

if else를 쓸 경우

// javascript로 작성된 코드입니다. 
if (command === "+") {
    // 더하기 
} else if (command === "-") {
    // 빼기 
} else if (command === "*") {
    // 곱하기 
} else if (command === "/") {
    // 나누기  
} else if (command === "%") {
    // 나머지 구하기
} else {
    // 제공하지 않는 명령어가 들어올 경우 
}

계속해서 else if 를 써줘야 하는 번거로움이 있죠.

 

 switch (command) {
            case "+":
                result = a + b; 
                break;
            case "-":
                result = a - b; 
                break;
            case "*":
                result = a * b; 
                break;
            case "/":
            	return result = a / b; 
              }

switch문은 대상 변수(위의 코드에서 command)를 정하고,

그 변수의 각 케이스를 정의하면 됩니다. 

쓰기도 편하고, 보는 사람도 이해하기 편하겠죠?

 

 


 

1. 형태 

switch(대상 변수)  {

      case 변수 후보 :

               처리로직

               케이스 마무리(break, return, continue)**

      default : 

               정의하지 않은 케이스, 처리 

    }

 

 

2. 동작원리  

해당 switch문에서 대상 변수가, 정의한 변수 후보와 일치할 경우, 그 케이스의 처리 로직이 수행됩니다. 

EX) switch문에서 대상 변수가 0일 경우,  case 0 : 인 케이스의 아래 코드가 수행됩니다.  

 

 

3. 주의

- 처리로직이 끝난 뒤, 케이스 마무리를 해줘야 합니다.

하지 않을 경우, 일치하지 않는 케이스여도 적힌 코드를 수행합니다. break문을 만날 때까지요.  

 

- 케이스 마무리는 break, return이 있습니다. 

break : 해당 switch문을 종료합니다. 

return : function내부에서 switch문을 이용할 경우, function의 return 값이 됩니다. 

 

*switch문으로 처리해야 하는 값을 배열로 받을 때, continue도 케이스 마무리로 이용할 수 있습니다. 

 continue를 사용할 경우, 해당 switch문은 끝나게 됩니다.  
 default문을 continue로 처리할 경우, 정의되지 않은 케이스는 모두 넘기게 됩니다. 

 

- default 문 작성을 까먹지 맙시다. 

*default문은 선택사항입니다. 

정말 많은 케이스가 있고, 모든 케이스를 정의할 수는 없기 때문에 default문으로 예외에 대한 처리 로직을 작성합니다.

if, else if, else의 else에 해당되는 문입니다. 

 


내용 중, 잘못된 부분이 있다면 편하게 말씀해주세요 : D

감사합니다.

 

 

댓글