JavaScript - Replit : Function(함수) - 여러 인자

meetAt 함수를 만들어주세요. 이 함수는 인자를 세개 받습니다.

  • 첫번째 인자는 년도에 해당하는 숫자입니다.
  • 두번째 인자는 월에 해당하는 숫자입니다.
  • 세번째 인자는 일에 해당하는 숫자입니다.
  • 년도 인자만 받았을 경우 --> "1234년" 과 같은 형식의 문자열을 리턴 해주세요.
  • 년도,월 인자를 받았을 경우 ---> 년도와 월을 조합해서 "1234년 5월" 과 같은 형식의 문자열을 리턴 해주세요.
  • 년도,월,일 인자를 전부 받았을 경우 --> 년도,월,일을 조합해서 "1234/5/6" 과 같은 형식의 문자열을 리턴 해주세요.
meetAt(2022); // 결과 --> "2022년"
meetAt(2032, 3); // 결과 --> "2032년 3월"
meetAt(1987, 10, 28); // 결과 --> "1987/10/28"

처음 풀이

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

처음 문제 자체를 쉽다 생각해서 바로 풀었는데 계속 도만 뜨길래
뭐가 잘못된 건지 모르고 생각보다 시간을 잡아먹었다...

오류 원인

함수는 언제 끝나는가? 함수는 return을 만나면 끝이 난다.
그래서 첫 인자를 받은 if (year) { return year + '년' }여기서 함수는 if 문에서 year 의 조건을 충족하고 return 만나 함수는 종료가 된 것이다.

이문제는 if문의 문제보단 함수의 리턴에 관한 문제인거 같다.

👀    인자의 우선순위 - 파라미터 값의 역순으로 나열해야한다.
문제처럼 인자가 세개이면 세개부터 쓰기 (두 번째, 세 번째 인자가 있는데 첫 번째 인자가 없을 수 없음)

함수는 이미 if 문에서 year 의 조건을 충족했기 때문에, 값을 return 하면서 종료가 된 것이다.

정답

function meetAt(year, month, date) {
  if (date) {return year + '/' + month + '/' + date};
  if (month) {return year + '년 ' + month + '월'};
  if (year) {return year + '년'};
}
console.log(meetAt(2021,09,02))

좋은 웹페이지 즐겨찾기