01 실행 컨텍스트란?
: 실행 컨텍스트(execution context)는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로, 자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념이다.

실행 컨텍스트는 동일한 환경에 있는 코드를 실행할 때
- 필요한 환경 정보들을 모아 컨텍스트를 구성하고,
- 이를 콜 스택(Call Stack)에 쌓아올렸다가,
- 가장 위에 쌓여 있는 컨텍스트와 관련 있는 코드들을 실행하는 식
으로 전체 코드의 환경과 순서를 보장한다.
자동으로 생성되는 전역공간과 eval을 제외하면 우리가 흔히 실행 컨텍스트를 구성하는 방법은 함수를 실행하는 것 뿐이다.

- 처음 JS 코드를 실행하는 순간 전역 컨텍스트가 콜 스택에 담긴다. → JS 파일이 열리는 순간 전역 컨텍스트가 활성화된다고 이해하면 된다.
- 함수를 호출하면 자바스크립트 엔진은 함수에 대한 환경 정보를 수집해서 해당 함수 실행 컨텍스트를 생성한 후 콜 스택에 담는다.
- 콜스택 맨 위에 해당 함수 실행 콘텍스트가 놓인 상태가 되면 전역 컨텍스트와 관련된 코드의 실행을 일시중단하고 해당 함수 실행 컨텍스트와 관련된 코드의 내부 코드들을 순차로 실행한다.
- 어떤 실행 컨텍스트가 활성화될 때 자바스크립트 엔진은 해당 컨텍스트에 관련된 코드들을 실행하는 데 필요한 환경 정보들을 수집해서 실행 컨텍스트 객체 저장한다.