실행 컨텍스트와 클로저 구조
실행 컨텍스트는 코드가 실행되는 환경이고 클로저는 함수가 태어난 렉시컬 환경을 나중에도 기억하는 구조다.
| 개념 | 뜻 | 좋은 사용 | 위험 신호 |
|---|---|---|---|
| Execution context | 함수 실행 중 필요한 정보 묶음 | 지역 상태와 실행 순서 관리 | 스택 흐름과 스코프 탐색 혼동 |
| Lexical scope | 선언 위치로 정해지는 이름 범위 | 코드 구조대로 이름 탐색 | 호출 위치 기준으로 오해 |
| Closure | 외부 변수를 기억하는 함수 | 팩토리 함수, 이벤트 핸들러 | 예상보다 오래 남는 상태 |
| Private state | 외부에서 직접 못 보는 값 유지 | 카운터, 설정 캡슐화 | 공유 상태 변경 추적 어려움 |
| Memory | 참조가 남으면 환경도 유지 | 필요한 값만 캡처 | DOM이나 큰 객체를 붙잡음 |
클로저를 볼 때는 함수 내부 코드보다 그 함수가 어떤 바깥 값을 계속 참조하는지 확인한다.