Book/모던 자바스크립트 Deep Dive
23장, 실행 컨텍스트
떼굴펜
2024. 5. 30. 14:41
소스 코드
: 실행가능한 코드 ; executable code)
종류
- 전역 코드
- 함수 코드
- eval 코드
- 모듈 코드
자바스크립트 엔진은 소스코드를 평가와 실행으로 나누어 처리한다.
소스코드의 평가
1) 선언문 실행
2) 식별자를 키로 실행 컨텍스트가 관리하는 스코프(렉시컬 환경의 환경 레코드)에 등록
소스코드의 실행 = 런타임 시작
1) 실행 컨텍스트가 관리하는 스코프에서, 실행에 필요한 정보를 검색해서 취득한다.
2) 실행 컨텍스트가 관리하는 스코프에, 실행 결과를 등록한다.
실행 컨텍스트
: 소스코드를 실행하는 데 필요한 환경을 제공하고 코드의 실행 결과를 스택(stack) 구조로 관리한다.
역할
1. 전역 코드 평가
: 전역 코드의 선언문 실행 후, 결과를 컨텍스트의 전역 스코프에 등록한다.
2. 전역 코드 실행
: 전역 변수에 값이 할당되어 함수가 호출된다.
(함수가 호출되면 전역 코드의 실행을 일시 중단하고 코드 실행 순서를 변경하여 함수 내부로 진입한다.)
3. 함수 코드 평가
: 매개변 수 및 지역 변수 선언문 실행 후, 결과를 컨텍스트의 지역 스코프에 등록한다.
(+arguments 객체 생성 및 this 바인딩)
4. 함수 코드 실행
: 변수에 값이 할당되고 메서드가 호출된다. 메서드 실행이 종료되면 함수 코드 실행 과정이 종료되고 함수 호출 이전으로 되돌아가 전역 코드 실행을 계속한다.
렉시컬 환경
: 식별자를 등록하고 관리하는 저장소
참고)
- 실행 컨텍스트 스택 : 코드의 실행 순서 관리
- 렉시컬 환경 : 스코프와 식별자 관리
렉시컬 환경의 구성
1. 환경 레코드 : 스코프에 포함된 식별자를 등록하고 해당 식발자에 바인딩된 값을 관리한다.
2. 외부 렉시컬 환경에 대한 참조 : 상위 스코프를 가리킨다.