inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 훈훈한 Javascript

for 반복문 질문 드립니다.

해결된 질문

261

오아름

작성한 질문수 2

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) 함수에 값이 할당되지 않는 것 것 같은데 이유를 알 수 있을까요?

 

감사합니다! :>

javascript

답변 1

1

otter

안녕하세요! 아름님!

질문해 주신 부분을 해결하기 위해서는 함수의 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 명령어에 대한 이해도를 높여 보시길 바랍니다!

0

오아름

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

강의 내용 PPT 제공

0

177

2

openweather 401 오류 지속적으로 발생해요..ㅠ

0

383

3

Geolocationposition 오류

1

524

1

for of, for in 강의에서

0

218

1

선생님 remaining 질문입니다.

0

233

1

ppt 제공

0

327

1

혹시 프론트, 백엔드 코스랑 강의가 겹치나요?

0

535

2

display:flex의 의미

0

431

1

반복문을 활용한 날짜 데이터 리팩토링

0

287

2

JS로 HTML. CSS 조작

0

256

1

조건에 따른 메시지 출력 강의

0

183

1

locallhost

0

477

2

객체 속성 접근시 브라켓 이용(vs. 닷 오퍼레이터)

0

255

1

interval에 대한 질문입니다.

0

279

2

이해가 안되는 부분..

0

402

2

강의 보며 작업한 코드를

0

395

1

제대로 이해한건지 모르겠어요..

0

323

2

강의자료 부탁드립니다.

0

480

1

Uncaught TypeError: Cannot set properties of null (setting 'textContent')

0

5068

1

openweather api 2.5 관련 질문드립니다

0

749

2

openweather 401에러

0

520

1

createTodo함수 안에 매개변수

0

246

1

contents : complete : 가 무슨뜻인가요?

0

258

2

Javascript Exercise 깃허브에 푸쉬

0

353

1