동일 환경에 있는 코드를 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이것을 위에서 말한 stack의 한 종류인 콜스택에 쌓아 올린다.
구성
1. 전역공간 2. eval()함수 3. 함수(흔히 실행컨텍스트를 구성하는 방법)// 1번 var a = 1; function outer() { function inner() { console.log(a); //undefined var a = 3; } // 2번 inner(); console.log(a); } // 3번 outer(); console.log(a);콜 스택에 쌓이는 실행 컨텍스트에 의해 순서가 보장됨
코드실행 → 전역(in) → 전역(중단) + outer(in) → outer(중단) + inner(in) → inner(out) + outer(재개) → outer(out) + 전역(재개) → 전역(out) → 코드종료
- 담기는 정보
1) VariableEnvironment
식별자 정보(record)를 가지고 있다.
var a = 3 <- var a를 의미
2) 외부환경(outer)를 가지고 있다.
3)선언 시점 LexicalEnvironment의 snapshot
- LexicalEnvironment
1) VariableEnvironment와 동일하지만, 변경사항을 실시간으로 반영
- ThisBlinding
1) this 식별자가 바라봐야할 객체