여기저기서 나오는 클로저 정의들
MDN(Mozilla Developer Network) 에서의 정의
: 함수와 그 함수가 선언될 당시의 lexical environment의 상호관계에 따른 현상
컨텍스트 A에서 선언한 내부 함수 B의 실행 컨텍스트가 활성화된 시점에서는 B의 outerEnvironmentReference가 참조하는 A의 lexical environment에 접근이 가능하다. 즉 A에서는 B에서 선언한 변수에는 접근할 수 없지만 B에서는 A에서 선언한 변수에 접근 가능하다.
요약:
클로저 → ‘어떤 함수에서 선언한 변수를 내부함수에서 참조할 때만 발생하는 현상’
→ 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상
→ 외부로 전달이 return만 있는 것이 아니라 콜백으로도 전달할 수 있음