Execution Context 는 자바스크립트의 핵심 개념으로,
코드를 실행하기 위해 필요한 환경이다.
더 자세히 말하자면, 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다.
자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념.
모든 코드는 특정한 실행 컨텍스트 안에서 실행된다.
javascript는 어떤 execution context가 활성화되는 시점에
선언된 변수들을 위로 끌어올리고(hoisting), 외부 환경 정보를 구성하고,
this값을 설정하는 등의 동작을 수행하는데, 이로 인해 다른 언어에서는
발생할 수 없는 특이한 현상들이 발생한다.
자바스크립트의 주요한 실행 컨텍스트에는 두 가지가 있다.
Global Execution Context
디폴트 실행 컨텍스트로, 자바스크립트 파일이 엔진에 의해 처음 로드되었을 때
실행되기 시작하는 환경이다.
Fuction Execution Context
우리가 execution context를 따로 구성하는 방법은 함수를 실행하는 것 뿐이다.
함수가 호출되고 실행됨에 따라서 해당 함수 안에서 생성되는 컨텍스트.
각각의 함수는 고유의 실행 컨텍스트를 가진다.
그리고 전역 실행 컨텍스트에 언제나 접근할 수 있다.