달나라 노트

Google Apps Script : switch ~ case ~ default (switch 조건문) 본문

Google Apps Script

Google Apps Script : switch ~ case ~ default (switch 조건문)

CosmosProject 2022. 11. 22. 20:30
728x90
반응형

 

 

 

switch ~ case ~ default 구문은 if ~ else if ~ else 조건문을 좀 더 간결하게 사용할 수 있는 구문입니다.

 

간결하게 사용할 수 있다는 장점 때문에 특정 상황에서는 switch ~ case ~ default 구문이 if ~ else if ~ else 구문보다 좀 더 코드를 더 적게 써도 조건문을 구현할 수 있다는 장점이 있습니다.

반대로 간결하게 사용할 수 있기 때문에 더 복잡한 기능에 대한 구현은 switch ~ case ~ default 구문으로는 불가능한 경우도 있습니다.

 

 

Syntax

switch (value) {
  case value1:
    ... do something 1 ...
  case value2:
    ... do something 2 ...
  case value3:
    ... do something 3 ...
  ...
  default:
    ... do something n ...
}

 

switch ~ case ~ defualt 구문의 형태는 위와 같습니다.

 

하나씩 해석해봅시다.

 

- switch (value)

가장 먼저 어떤 값을 주어줍니다.

이 값이 바로 조건 체크의 대상 값이 될 것입니다.

 

 

-   case value1:
-    ... do something 1 ...

value == value1이라면 do something 1 부분이 실행됩니다.

 

 

-   case value2:
-    ... do something 2 ...

value == value2라면 do something 2 부분이 실행됩니다.

 

 

-   case value3:
-    ... do something 3 ...

value == value3라면 do something 3 부분이 실행됩니다.

 

이렇게 원하는 개수의 case 조건을 넣을 수 있습니다.

 

 

-   default:
-    ... do something n ...

만약 value가 위에서 체크했던 모든 case 구문의 값과 같지 않다면 default block에 있는 do something n이 실행됩니다.

 

 

 

 

 

실제 예시를 봅시다.

 

function myFunction() {
  var i = 3;

  switch (i) {
    case 1:
      Logger.log('i is 1');
      break;
    case 2:
      Logger.log('i is 2');
      break;
    case 3:
      Logger.log('i is 3');
      break;
    case 4:
      Logger.log('i is 4');
      break;
    case 5:
      Logger.log('i is 5');
      break;
    default:
      Logger.log('i is out of range');
  }
}


-- Result
i is 3

 

- var i = 3;

먼저 i를 3으로 지정합니다.

 

그리고 swtich 구문이 시작됩니다.

 

 

- switch (i) {

switch 구문의 대상 변수는 i입니다.

 

 

-     case 3:
-       Logger.log('i is 3');

i = 3이므로 당연히 case 3: 이 부분이 실행될 것입니다.

그래서 출력된 내용도 i is 3이라는 문장이 출력되었죠.

 

의도한대로 실행되었습니다.

 

 

 

 

 

근데 좀 이상하죠.

왜 각각의 case 구문에 break;를 두었을까요?

 

break는 break가 속한 코드블록을 중지하는 역할을 합니다.

break가 switch ~ case ~ default 구문에 속해있으므로 만약 여기에 있는 break가 실행되면 switch ~ case ~ default 구문이 중단되고 switch ~ case ~ defualt 구문을 벗어나 다음 코드가 실행됩니다.

 

근데 왜 break를 넣었을까요?

 

function myFunction() {
  var i = 3;

  switch (i) {
    case 1:
      Logger.log('i is 1');
    case 2:
      Logger.log('i is 2');
    case 3:
      Logger.log('i is 3');
    case 4:
      Logger.log('i is 4');
    case 5:
      Logger.log('i is 5');
    default:
      Logger.log('i is out of range');
  }
}


-- Result
i is 3
i is 4
i is 5
i is out of range

 

위처럼 break를 모두 삭제하고 코드를 실행시켜보았습니다.

 

결과를 보면 일단 i is 3이라는 문장이 출력된 것 까지는 좋았는데

그 이후로 i is 4, i is 5, i is out of range 라는 문장까지 출력되었습니다.

이 말은 조건을 만족하는 case 3: 부분부터 그 이후까지 모두 출력이 된 거라고 볼 수 있죠.

 

이것은 case ~ switch ~ default 구문의 특성인데 case ~ switch ~ default 구문에서는 특정 조건을 만족하면 그 부분의 case 이후로 모든 코드를 실행합니다.

 

그래서 각각의 case구문마다 break;를 두어서 조건을 만족하는 case 구문이 실행된 후 swtich ~ case ~ default 구문이 종료되게 하여 그 이후의 case 들은 실행되지 않도록 하는 것이죠.

 

 

 

 

 

 

728x90
반응형
Comments