실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다.
ECMAScript 사양은 소스코드를 전역 코드, 함수 코드, eval 코드, 모듈 코드의 4가지 타입으로 구분한다. 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다. 소스코드의 타입이 구분되는 이유는 타입에 따라 생성 관리가 다르기 때문이다.
전역 코드는 최상위 스코프인 전역 스코프를 생성하고, 전역 변수와 전역 함수를 바인딩한다.
함수 코드는 지역 스코프를 생성하고 전역 스코프에서 시작하는 스코프 체인을 형성한다.
eval 코드는 자신만의 독자적인 스코프를 생성한다.
모듈 코드는 모듈별로 독립적인 스코프를 생성한다.
모든 소스코드는 실행에 앞서 평가되며 평가 과정에서는 선언문만 먼저 실행되어 생성된 변수나 함수 식별자를 실행 컨텍스트가 관리하는 스코프에 등록한다. 평가 과정이 끝나면 소스코드가 순차적으로 실행되며, 실행에 필요한 정보(변수나 함수의 참조)를 실행 컨텍스트의 스코프에서 검색해서 취득한다.
실행 컨텍스트는 스택을 통해 코드의 실행 순서를 관리하고, 렉시컬 환경을 통해 식별자와 식별자에 바인딩된 값, 상위 스코프에 대한 기록을 참조한다.
렉시컬 환경은 환경 레코드와 외부 렉시컬 환경에 대한 참조로 구성된다. 환경 레코드는 스코프에 포함된 식별자와 값을 관리하는 저장소이고, 외부 렉시컬 환경에 대한 참조는 상위 스코프를 가리킨다. 이때 상위 스코프는 해당 실행 컨텍스트를 생성한 소스코드를 포함하는 상위 코드의 렉시컬 환경을 말한다. 이는 단방향 링크드 리스트인 스코프 체인을 구현한다.
'Javascript' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 읽기 - 25장 : 클래스 (0) | 2022.04.07 |
---|---|
모던 자바스크립트 Deep Dive 읽기 - 24장 : 클로저 (0) | 2022.04.07 |
모던 자바스크립트 Deep Dive 읽기 - 22장 : this (0) | 2022.04.07 |
모던 자바스크립트 Deep Dive 읽기 - 21장 : 빌트인 객체 (0) | 2022.04.06 |
모던 자바스크립트 Deep Dive 읽기 - 20장 : strict mode (0) | 2022.04.06 |