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))
Author And Source
이 문제에 관하여(JavaScript - Replit : Function(함수) - 여러 인자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dltjsgho/JavaScript-Replit-Function함수-여러-인자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)