스코프 체인 탐색 흐름
자바스크립트는 현재 스코프에서 식별자를 찾고, 없으면 바깥 렉시컬 스코프로 차례대로 올라간다.
| 단계 | 찾는 위치 | 결과 | 주의점 |
|---|---|---|---|
| Local | 현재 함수나 블록 스코프 | 가장 가까운 이름 사용 | 바깥 변수와 같은 이름 shadowing |
| Outer | 선언 당시의 바깥 스코프 | lexical scope 기준 탐색 | 호출 위치와 선언 위치 혼동 |
| Global | 전역 객체와 모듈 범위 | 마지막 후보 | 전역 이름 충돌 |
| Not found | 모든 범위에서 실패 | ReferenceError | 오타와 선언 누락 |
| Closure | 바깥 변수를 함수가 기억 | 상태 보존 가능 | 예상보다 오래 살아 있는 참조 |
스코프 체인은 함수가 어디서 호출됐는가보다 어디서 선언됐는가를 기준으로 이름을 찾는다.