어떻게 실행 컨텍스트가 생성되고 코드 실행 결과가 관리되는지, 그리고 어떻게 실행 컨텍스트를 통해 식별자를 검색하는지 살펴보자.
var x = 1;
const y = 2;
function foo (a) {
var x = 3;
const y =4;
function bar (b) {
const z = 5;
console.log(a + b + x + y + z);
}
bar(10);
}
foo(20); // 42
소스 코드가 로드되면 자바스크립트 엔진은 전역 코드를 평가한다.
평가 순서
전역 실행 컨텍스트 생성
전역 렉시컬 환경 생성
2.1. 전역 환경 레코드 생성
2.1.1. 객체 환경 레코드 생성
2.1.2. 선언적 환경 레코드 생성
2.2. this 바인딩
2.3. 외부 렉시컬 환경에 대한 참조 결정

위 과정을 통해 생성된 전역 실행 컨텍스트와 렉시컬 환경
1. 전역 실행 컨텍스트 생성

2. 전역 렉시컬 환경 생성