본문 바로가기

Programming/Javascript

Closure 클로저

728x90
function outerFunc(init_count){
  let count = init_count ?? 0;
  return function(add){
    count += add ?? 1;
    return count;
  };
};

let counter = outerFunc(1); // 출력값:1
counter(); // 2
counter(2); // 4

outerFunc를 호출한 반환 함수가 counter 변수에 들어감

counter가 함수가 되어 호출할때 outerFunc 안의 count 변수에 접근하여 값을 가져옴

 

클로저

함수가 선언될 당시의 렉시컬 환경(Lexical Environment)을 기억해, 함수 실행이 끝난 뒤에도

그 내부에서 선언된 변수들에 계속 접근할 수 있는 함수

 

※ 렉시컬 환경(Lexical Environment) 코드가 작성된 시점에서의 변수와 함수 선언을 포함하는 환경

 

728x90