javascript
Execution Context.
실행 컨텍스트, Variable Environment, Scope Chain, this 바인딩
코드가 실행될 때마다 Execution Context가 생성되고, 변수 환경, 스코프 체인, this가 그 안에서 결정됩니다.
🧱 Execution Context 종류
- Global EC: 스크립트 최상위.
var→ global object,let/const→ 선언적 환경. - Function EC: 함수 호출마다 생성. 매개변수, 지역 변수, arguments 포함.
- Eval EC:
eval()코드 (거의 사용 안 함).
🧱 생성 단계
- Creation Phase
- Variable Environment:
var, 함수 선언 호이스팅 - Lexical Environment:
let,const, 블록 스코프 - Scope Chain 연결
this바인딩 (strict mode, 호출 방식에 따라 달라짐)
- Variable Environment:
- Execution Phase
- 코드를 한 줄씩 실행
🔗 Scope Chain
- 현재 Lexical Environment → 바깥 Lexical Environment → … → Global
- 식별자 조회 시 안쪽부터 바깥으로 탐색
🎯 this 바인딩 (요약)
| 호출 방식 | this |
|---|---|
| 일반 함수 호출 | strict: undefined, non-strict: global |
| 메서드 호출 | 호출 객체 |
new | 새로 만든 인스턴스 |
call/apply/bind | 명시적으로 지정 |
| 화살표 함수 | 렉시컬 this (바깥 EC의 this) |
🔗 참고 자료
- JavaScript execution model (MDN) — 실행 컨텍스트 스택(Call Stack)과 Job Queue를 설명한다.
- this (MDN) — 호출 방식에 따른 this 바인딩 규칙을 정리한다.
- In depth: Microtasks and the runtime (MDN) — 실행 컨텍스트가 생성, 파괴되는 런타임 맥락을 다룬다.
- Closures (MDN) — 렉시컬 환경이 스코프 체인으로 유지되는 방식을 설명한다.
