이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.






11-1 풀이

function fileExtensionSwitch(fileExtension){
  var type;

  switch(fileExtension){
    case "jpg":
    case "jpeg":
    case "png":
    case "gif":
      type = "그림파일";
      break;

    case "wav":
    case "mp3":
    case "mid":
      type = "음악파일";
      break;

    case "mp4":
    case "avi":
    case "mkv":
      type = "영상파일";
      break;

    default:
      type = "알수 없는 파일";
  }

 return type;
}

실전이라면 파일 타입에 따라 각각 다른 일을 하는 코드가 들어갈 겁니다. 예를들어 그림파일이라면 그림을 출력하는 코드, 음악파일이라면 음악을 재생하는 코드, 영상 파일이라면 영상을 재생하는 코드, 알수 없는 파일이라면 오류를 표시하는 코드 등..

11-2 풀이

//연습문제 9-2에서 가져온 윤년 구하는 함수
function checkLeapYear(year){
  var isLeapYear;

  if(year%4 != 0){
    isLeapYear = false;
  }
  else if(year%100 != 0){
    isLeapYear = true;
  }
  else if(year%400 != 0) {
    isLeapYear = false;
  }
  else {
    isLeapYear = true;
  }

  return isLeapYear;
}

//연습문제 11-2 함수
function getNumOfDate(year, month){
  var numOfDate;

  switch(month){
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      numOfDate = 31;
      break;

    case 2:
      if(checkLeapYear(year)){
        numOfDate = 29;
      }
      else {
        numOfDate = 28;
      }
      break;

    case 4:
    case 6:
    case 9:
    case 11:
      numOfDate = 30;
      break;
  }

 return numOfDate;
}

위 코드를 if문으로 나타내면 아래와 같습니다.

function getNumOfDate(year, month){
  var numOfDate;

  if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
    numOfDate = 31;
  }
  else if(month == 2){
    if(checkLeapYear(year)){
      numOfDate = 29;
    }
    else {
      numOfDate = 28;
    }
  }
  else if(month == 4 || month == 6 || month == 9 || month == 11){
    numOfDate = 30;
  }

 return numOfDate;
}

어떤가요? switch가 좀 더 덜 복잡해 보이지 않나요?

+ Recent posts