[자바스크립트 연습문제] 11 풀이

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






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가 좀 더 덜 복잡해 보이지 않나요?

댓글

S
Sujung Song 2021.06.17
아녜요 쓰앵님,, 저처럼 하면 if문보다 훨씬 복잡해 보인답니다,,? ಥ_ಥ 의미없는 ctrl c, v 엿군요,, 보고 나서야 왜 아 그렇게 할껄 싶네유,,  function chgDate(year, month){ var specialFeb    if(yearCal(year)) {     febDate = 28   }else{     febDate = 29   }   switch(month){   case 1 : return 31     break   case 2 : return febDate     break   case 3 : return 31     break   case 4 : return 30     break   case 5 : return 31     break   case 6 : return 31     break   case 7 : return 31     break   case 8 : return 31     break   case 9 : return 30     break   case 10 : return 31     break   case 11 : return 30     break   case 12 : return 31     break   } }
I
Ian H 2021.06.17
@Sujung Song,
case 여러개 합칠 수 있는거 많은 사람들이 잘 모르는 기능이죠^^ 작성하신 코드도 case가 1부터 12까지 순서대로 나열되어 있어서 길어보일지언정 가독성이 나쁘진 않은 코드입니다. 다만 6월은 31일이 아니라 30일까지 있습니다.
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP