클로저는 함수가 끝난 뒤에도 필요한 렉시컬 환경을 유지한다

호출 순서 속에서 어떤 변수가 살아남고 각 함수 인스턴스가 무엇을 공유하는지 본다.

선언

outer 생성

count가 있는 렉시컬 환경을 만든다

반환

inner 함수

자신이 선언된 outer 환경을 참조한 채 반환

종료

outer call 끝

일반 지역은 끝나지만 참조된 환경은 유지

재호출

inner 실행

보존된 count를 읽고 다음 값으로 변경

핵심클로저는 값을 복사해 두는 것이 아니라 특정 함수 인스턴스가 렉시컬 환경을 계속 참조하는 구조다.