Context
함수 호출마다 실행 컨텍스트가 만들어지고 콜 스택에 쌓입니다.
실행 컨텍스트는 코드가 실행되는 환경이고 클로저는 함수가 태어난 렉시컬 환경을 나중에도 기억하는 구조입니다.
함수 호출마다 실행 컨텍스트가 만들어지고 콜 스택에 쌓입니다.
코드가 작성된 위치를 기준으로 외부 변수 접근 경로가 정해집니다.
내부 함수가 외부 함수의 변수를 참조하면 환경이 보존됩니다.
보존된 상태를 이용해 private 변수나 함수 팩토리를 만들 수 있습니다.
현재 실행 중인 함수와 돌아갈 위치를 스택 구조로 관리합니다.
현재 범위에서 없으면 바깥 범위로 이름을 찾아 올라갑니다.
클로저는 외부에서 직접 접근할 수 없는 상태를 안전하게 감쌉니다.
불필요하게 큰 객체를 클로저가 붙잡으면 해제가 늦어질 수 있습니다.
이 함수가 호출될 때 어떤 변수 환경을 기억하고 있는지 추적합니다.
반복문과 비동기 콜백에서 같은 변수를 공유하는 상황을 확인합니다.
카운터 함수를 클로저로 만들고 외부에서 내부 값을 직접 바꾸지 못하게 합니다.