소스코드의 타입
- 전역코드 : 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프 생성
- 함수코드 : 지역 스코프를 생성하고 지역 변수, 매개 변수, arguemnt 객체 관리
- eval 코드 : strict mode에서 독자적인 스코프를 생성
- 모듈 코드 : 모듈별 독립적인 모듈 스코프를 생성
소스코드의 평가와 실행
1. 소스코드의 평가 : 실행 컨텍스트를 생성, 변수, 함수 등의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프(렉시컬 환경의 환경 레코드)에 등록
2. 소스코드의 실행 : 런타임 시작, 소스코드 실행에 필요한 정보를 검색해서 취득
실행 컨텍스트
- 소스코드를 실행하는데 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역
- 식별자를 등록하고 관리하는 스코프와 코드 실행 순서 관리를 구현한 내부 매커니즘으로 모든 코드는 실행 컨텍스트를 통해 실행되고 관리됨
실행 컨텍스트의 역할
- 전역 코드 평가
- 전역 코드 실행
- 함수 코드 평가
- 함수 코드 실행
실행 컨텍스트 스택
- 전역 코드 평가와 실행
- foo 함수 코드의 평가와 실행
- bar 함수 코드의 평가와 실행
- foo 함수 코드로 복귀
- 전역 코드로 복귀
렉시컬 환경
렉시컬 환경 : 식별자와 식별자에 바인딩된 값, 상위 스코프에 대한 참조를 기록하는 자료 구조, 실행 컨텍스트를 구성하는 컴포넌트
- 키와 값을 갖는 객체 형태의 스코프를 생성하여 식별자를 키로 등록하고 식별자에 바읹딩된 값을 관리
- 두 개의 컴포넌트로 구성 : 환경 레코드, 외부 렉시컬 환경에 대한 참조