인프런 커뮤니티 질문&답변

김현지님의 프로필 이미지
김현지

작성한 질문수

[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문

클로저 질문입니다

작성

·

177

0

자바스크립트 클로저 함수 공부를 더 해보다가, 클로저개념이 외부함수내에서 내부함수를 쓸때 외부함수가 생을 마감했더라도 외부함수가 지닌 변수를 내부함수에서 사용할수 있다는 개념임을 인지했습니다. 그래서 다음 문제를, 저는 이렇게 풀었는데 오답으로 나와서 곰곰히 생각해보게되었습니다. 이렇게 되었을때, 문제가 지향하는 바가 return 하는 당시 gfunc라는 함수를 재호출 시켜서 함수를 출력시키라는 것일까요? console.log(gfunc())라는 함수를 최종적으로 4번 출력시키는 것이 내부함수의 역할이라면, gfunc = solution()이니까 함수가 영원히 끝나지 않게 되는 것이 아닌가요? 왜냐하면 solution내에 gfunc가있고 gfunc는 solution을 또 호출하니까요.. 긴글 읽어주셔서 감사합니다

클로져(Closure)를 연습해보자

다음과 같은 모습으로 당신이 만든 solution 함수를 실행하고자 합니다
 
 
// solution
// solution
let gfunc = solution(3,6);
 
// solution
console.log(gfunc()) // 3
console.log(gfunc()) // 4
console.log(gfunc()) // 5
console.log(gfunc()) // 6
console.log(gfunc()) // undefined
 
 
 
 
 
function solution(start, end) {

            return (function () {
                for (let i = start; i < end + 1; ++i) {

                    console.log(i);
                }
            })();
        }


        let gfunc = solution(3, 6);

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

gfunc가 왜 solution을 또 호출하나요..? gfunc는 solution(3, 6)의 리턴값입니다. 리턴값에는 solution 함수가 없는데요?

김현지님의 프로필 이미지
김현지

작성한 질문수

질문하기