Execution Context, 실행 컨텍스트
<aside>
💡 실행 컨텍스트는 실행할 코드에 제공할 환경 정보를 모아놓은 객체이다.
</aside>
실행 컨텍스트란?
스택과 큐
실행 컨텍스트를 살펴보기 전 스택과 큐의 개념을 살펴보자.
- 스택: 출입구가 하나뿐인 깊은 우물같은 데이터 구조 - LIFO
- 큐: 양쪽이 모두 열려있는 파이프같은 데이터 구조 - FIFO
실행 컨텍스는 실행할 코드에 제공할 환경 정보를 모아놓은 객체다. 이때,
- 동일한 환경에 있는 코드들을 실행할 때 필요한 환경정보를 모아 컨텍스트를 구성하고,
- 이를 콜 스택에 쌓아올리고,
- 가장 위에 쌓여있는 컨텍스트와 관련있는 코드들을 실행하는 식으로 전체 코드와 환경 순서를 보장한다.
이떄 동일한 환경은 하나의 실행 컨텍스트를 구성할 수 있는 방법이다. 우리가 흔히 실행 컨텍스트를 구상하는 방법은 함수를 실행하는 것이다.
실행 컨텍스트와 콜 스택
자바스크립트 코드를 처음 실행하는 순간 전역 컨텍스트가 콜 스택에 담긴다.
<aside>
💡 전역 콘텍스트라는 개념은 일반적인 실행 컨텍스트와 특별히 다를것이 없다.
</aside>
최상단의 공간은 코드 내부에서 별도의 실행 명령이 없어도 브라우저에서 자동으로 실행하므로 자바스크립트 파일이 열리는 순간 전역 컨텍스트가 활성화된다.
- 콜 스택에서는 전역 컨텍스트 외에 다른 덩어리가 없으므로 전역 컨텍스트와 관련된 코드들을 순차로 진행하다가,
- 함수를 호출하면 자바스크립트 엔진은 호출한 함수에 대해 환경 정보를 수집해서 해당 함수의 실행 컨텍스트를 생성하고 콜스택에 담고,
- 콜스택 맨 위에 실행 컨텍스트가 놓여있으면 전역 컨텍스트와 관련된 코드의 실행을 일시중단하고,