또다른 조건문인 switch 문에 대해 배워봅시다.

switch

switch문은 때때로 if문보다 가독성이 높은 조건문입니다. 하지만 if문에 비해 조건이 한정적입니다.

switch(주어진_값){

  case 데이터1:
    주어진_값데이터1과 같은 경우 이곳의 코드가 실행됨
    break;

  case 데이터2:
    주어진_값데이터2와 같은 경우 이곳의 코드가 실행됨
    break;

  case 데이터3:
    주어진_값데이터3과 같은 경우 이곳의 코드가 실행됨
    break;

  default:
    주어진_값이 어떠한 데이터와도 같지 않을 경우 이곳의 코드가 실행됨

}

- default 부분은 생략가능합니다. default 부분이 생략된 경우, 값이 어떠한 case에도 맞지 않는 경우 아무일을 하지 않고 switch문이 종료됩니다.
- case는 원하는 만큼 만들 수 있습니다. 단, 가장 먼저 만족된 case의 코드가 실행됩니다.
- switch문에 사용된 switch, case, break는 예약어입니다.

if 문은 조건의 참, 거짓을 판단하여 코드를 실행하지만, switch 문은 주어진 값과 case의 데이터를 비교한 후 두 값이 같은 경우에 해당 case의 코드를 실행합니다. 위 switch 문을 if 문으로 변경하면 다음과 같습니다.

if(주어진_값 == 데이터1){
  주어진_값데이터 1과 같은 경우 이곳의 코드가 실행됨
}
else if(주어진_값 == 데이터2){
  주어진_값데이터 2와 같은 경우 이곳의 코드가 실행됨
}
else if(주어진_값 == 데이터3){
  주어진_값데이터 3과 같은 경우 이곳의 코드가 실행됨
}
else {
  주어진_값이 어떠한 데이터와도 같지 않을 경우 이곳의 코드가 실행됨
}

반대로 if 문을 switch 문으로 변경하려면 if 문이 반드시 위와 같은 형태일 때만 switch로 변경할 수 있습니다. if 문이 == 이외의 연산자를 사용하는 경우, 하나의 값에 대한 비교가 아닌 경우는 switch로 변경할 수 없습니다.

또 한가지 switch만의 특징은 break 의 사용에 있습니다. switch 문에서 한번 case의 조건이 만족되면 그 다음의 case들의 조건은 무시되고 break가 나올 때까지 코드가 실행됩니다. 즉 다음과 같은 코드를 만들 수 있습니다.

function colorCalendar(day){
  var color;

  switch(day){
    case "mon":
    case "tue":
    case "wed":
    case "thu":
    case "fri":
      color = "white";
      break;

    case "sat":
      color = "blue";
      break;

    case "sun":
      color = "red";
      break;
  }

  return color;
}

colorCalendar함수는 요일("mon", "tue", "wed", "thu", "fri", "sat", "sun") 데이터를 받아 해당 요일의 달력 색깔을 return하는 함수입니다. case가 나온 후 break 없이 계속하여 다른 case들을 사용할 수 있습니다.

colorCalendar함수를 if 문으로 변경하면 다음과 같습니다.

function colorCalendar(day){
  var color;

  if(day == "mon" || day == "tue" || day == "wed" || day == "thu" || day == "fri"){
    color = "white";
  }
  else if (day == "sat"){
    color = "blue";
  } 
  else if (day == "sun"){
    color = "red";
  }

  return color;
}

위 코드를 직접 작성해 보면 알겠지만, switch를 사용하는 것이 특수문자의 사용이 적어서 훨씬 쉽고 오타도 적게 납니다. 위 코드는 분기 후 할 일이 별로 없어도 큰 차이를 못느끼겠지만, 코드가 복잡해지면 if를 사용하는 것보다 switch를 사용하는 것이 보기에도 좋으므로 switch를 쓸 수 있는 곳에는 꼭 사용하도록 합시다.

+ Recent posts