• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

클로저 질문입니다

22.01.25 12:55 작성 조회수 135

0

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

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

다음과 같은 모습으로 당신이 만든 solution 함수를 실행하고자 합니다
<textarea class="ace_text-input" style="margin:0px -1px;font-family:'Roboto Mono';position:absolute;z-index:0;width:1px;height:1px;opacity:0;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-attachment:initial;background-origin:initial;background-clip:initial;appearance:none;resize:none;outline:none;overflow:hidden;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:1px;line-height:inherit;padding:0px 1px;contain:strict;user-select:text;top:38px;left:161px;white-space:pre !important;border:initial none initial" spellcheck="false" readonly="readonly" wrap="off"></textarea>
 
 
// 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 함수가 없는데요?