Skip to content
Kang Log
Go back

클로저

Updated:

클로저란

어떤 함수가 선언한 변수를 참조하는 내부 함수를 외부로 전달할 경우, 함수의 실행 컨텍스트가 종료된 후에도 해당 변수가 사라지지 않는 것을 말한다.

쉬운 예제

var outer = function () {
  var a = 1;
  var inner = function () {
    return ++a;
  }
  return inner;
};
var outer2 = outer();
console.log(outer2()); // 2
console.log(outer2()); // 3 

inner에 대한 함수 자체의 참조가 사라지지 않으면서 inner의 외부 렉시컬 공간 정보가 이미 outer 함수는 콜스택에서 사라졌음에도 사라지지 않는 것이다.

쉬운 예시로 return으로 외부 공간에 전달되는 것을 얘기했지만 이 외에도 setinterval, addEventListener, Promise await 등 적용되는 사례가 많다

=> 클로저란 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상


Share this post on:

Previous Post
콜백함수
Next Post
배포 dispatch 실행시 workflow