역할
코드를 실행하는 데 필요한 환경을 제공하고 스코프, 식별자, 코드 실행 순서를 관리하는 객체
자바스크립트 코드 실행 과정
자바스크립트 엔진은 코드를 평가한 뒤 실행하는데, 이 과정은 크게 전역 스코프와 함수 스코프 기준으로 나뉜다.
코드 실행이 시작되면,
- 전역 평가 과정
- 전역 실행 컨텍스트를 생성하고
- 전역 스코프의 변수와 함수 선언문만 먼저 실행하여 전역 실행 컨텍스트에 식별자 키로 등록 (호이스팅)
- 전역 실행 과정
- 선언문이 아닌 코드를 순차적으로 실행하여 이 과정에서 할당되어 있는 값을 식별자 키의 값으로 등록
- 도중에 함수 호출문이 있으면 제어권을 함수 내부로 옮김
- 함수 평가 과정
- 함수 실행 컨텍스트 생성
- 함수의 매개변수와 지역 변수 선언문을 먼저 실행하여 함수 실행 컨텍스트에 식별자 키로 등록
- 함수 실행 과정
- 선언문을 제외한 코드를 실행, 이때 값 참조를 위해 상위 스코프로 거슬러 올라가는 스코프 체인 발생
- 검색된 값을 식별자 키의 값으로 등록
- 특정 함수 실행이 끝나면 함수 실행 컨텍스트가 실행 컨텍스트 스택(콜 스택)에서 pop(제거)되고 코드 제어권이 다시 전역으로 이동
- 위 과정을 반복하여 모든 코드의 실행이 끝나면 전역 실행 컨텍스트가 마지막으로 콜 스택에서 제거되면서 전체 코드 실행 종료