• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

for 반복문 질문 드립니다.

22.12.17 12:35 작성 조회수 179

1

 안녕하세요!

알고리즘 21번 문제의 출력을 for 반복문을 사용하는 것으로 변경하고 싶었으나, 함수 사용 결과가 undefined로 출력되어 문의 드립니다.

  • 작성코드

// 이번달은 며칠? 함수 만들기
function days(month) {
	if (month === 2) {
		//console.log(28);
	}
	else if (month <= 7 && month % 2 === 1) {
		//console.log(31);
	}
	else if (month >=8 && month % 2 === 0) {
		//console.log(31);
    }
	else {
		//console.log(30);
    }
}

// 1월 ~ 12월은 며칠인지 반복문을 이용하여 출력하기
for(let i = 1; i < 13; i++) {
    console.log(i + '월은 ' + days(i) + '일');
}
  • 출력결과

1월은 undefined일
2월은 undefined일
3월은 undefined일
4월은 undefined일
5월은 undefined일
6월은 undefined일
7월은 undefined일
8월은 undefined일
9월은 undefined일
10월은 undefined일
11월은 undefined일
12월은 undefined일

반복문 내 days(i) 함수에 값이 할당되지 않는 것 것 같은데 이유를 알 수 있을까요?

 

감사합니다! :>

답변 1

답변을 작성해보세요.

1

otter님의 프로필

otter

2022.12.17

안녕하세요! 아름님!

질문해 주신 부분을 해결하기 위해서는 함수의 return 개념을 다시 살펴볼 필요가 있습니다!

우리가 정의한 함수는 해당 함수가 호출되는 시점에 실제로 동작하게 됩니다.

이때, 호출된 함수는 return이라는 명령어를 사용할 수 있죠.

함수 내부에서 특정 로직을 수행하는 중 return 명령어를 만나게 되면,
함수의 동작은 종료되고, 내부에서 return 한 데이터를 함수를 호출했던 위치로 넘겨주게 됩니다.

아래의 코드처럼요!👍

const foo = function() {
  return "foo called";
};

console.log(foo()); // foo called

 

만약 return 해주는 데이터가 없다면,

const foo = function() {
  "foo called";
};

console.log(foo()); // undefined

위의 코드처럼 undefined가 출력됩니다.

이는 foo함수를 실행시킨 결과로 어떠한 데이터도 돌려받지 못했기 때문이죠!

 

아름님이 작성해 주신 코드를 보면 days 함수를 호출한 위치에서 전달인자로 넘겨준 i를 통해
month에 맞는 일자를 반복문에서 출력하고자 하신 것 같습니다.

현재는 days 함수가 아무런 데이터를 return하고 있지 않죠?
즉, 함수를 호출한 위치에서 어떠한 데이터도 돌려 받지 못해서 undefined를 돌려 받고 있는 것으로 보여집니다.

원하는 로직을 완성하시기 위해서는 days 함수 내에서 return 명령어를 사용해
days(i)로 함수를 호출한 위치에 올바른 숫자들을 return 해주시면 되겠죠?

다시 한번 해당 내용에 대한 학습을 진행하고자 하신다면,
본 강의 섹션 2. 함수 섹션의 함수의 리턴 영상을 통해 return 명령어에 대한 이해도를 높여 보시길 바랍니다!

오아름님의 프로필

오아름

질문자

2022.12.17

오! 네! 이해되었습니다! 감사합니다 ~~!