날짜 입력 함수

YJ·2023년 1월 12일
0

인자 3개를 받는 함수가 있다.
첫번째 인자는 년도에 해당하는 숫자, 두번째 인자는 월에 해당하는 숫자, 세번째 인자는 일에 해당하는 숫자이다.
년도 인자만 받았을 경우 → "2022년" 과 같은 형식의 문자열을 반환한다.
년도, 월 인자를 받았을 경우 →"2032년 3월" 과 같은 형식의 문자열을 반환한다.
년도, 월, 일 인자를 전부 받았을 경우 → "1987/10/28" 과 같은 형식의 문자열을 반환한다.

프로그래밍은 위에서부터 순차적으로 진행된다는 것을 절대 잊어서는 안된다!

그러므로 중복으로 적용되는 인자의 조건을 먼저 설정해주면, 코드를 작성하는 데 매우 비효율적인 상황이 발생할 것이다.

위 조건에서 단 한 번만 적용되는 "일"에 해당하는 인자를 먼저 설정해주고, 그 다음 중복이 적은 "달"에 해당하는 인자를 설정해주면 위에서 아래로 진행되는 성질에 의해 원하는 결과를 얻을 수 있게 된다.

function formatDate(year, month, date) {
  if (date) {
    return year + '/' + month + '/' + date;
  } else if (month) {
    return year + '년 ' + month + '월';
  } else {
    return year + '년';
  }
}

또는

function formatDate(year, month, date) {
  if (date) return year + '/' + month + '/' + date;
  if (month) return year + '년 ' + month + '월';
  if (year) return year + '년';
}

그런데 여기서 만약 사용자가 입력할 때, year 값을 빼고 month나 date만 적었다고 가정해보자.
그래도 위의 함수는 실행될 것이고 우리는 원하는 결과를 얻지 못할 것이다.
이러한 오류를 막기 위해 가장 상위에 year 인자가 없을 경우 함수를 실행하지 못하도록 하는 조건을 넣어주는 것이 좋으며, 이처럼 원하는 조건과 반대의 경우 함수를 조기 종료시키는 것을 early return 이라 한다.


profile
Hello

0개의 댓글