코드의 실행환경에 대한 여러가지 정보를 담고 있는 개념으로, 간단히 말하자면 자바스크립트 엔진에 의해 만들어지고 사용되는 코드 정보를 담은 객체의 집합이다.
즉, JS의 코드가 실행되기 위해서는 변수객체, 스코프체인, this 정보들을 담고 있는 곳을 실행 컨텍스트라고 하며 실행 가능한 코드가 실행되기 위해서 필요한 환경이다.
자바 스크립트의 코드는 3가지 종류로 이루어지는데, 글로벌 스코프에서 실행하는 글로벌 코드, 함수 스코프에서 실행하는 함수 코드 그리고 eval()
로 실행되는 코드가 있다. 이 각각의 코드는 자신만의 실행 컨텍스트를 생성한다.
엔진이 스크립트 파일을 실행하기 전에 글로벌 실행 컨텍스트(Global Execution Context, GEC) 가 생성되고, 함수를 호출할 때마다 함수 실행 컨텍스트 함수 실행 컨텍스트(Function Execution Context, FEC)가 생성된다.
컨택스트 생성 시 변수 객체, 스코프 체인, this가 생성된다. 컨텍스트 생성 후 함수에 사용되는 변수들은 변수 객체 안에서 값을 찾고 없다면 스코프 체인을 올라가며 찾는다. 함수 실행이 마무리 되면 해당 컨텍스트는 사라지고 페이지가 종료되면 전역 컨텍스트가 사라진다.
실행 컨텍스트가 생성되면 흔히 콜 스택이라고도 불리는 실행 컨텍스트 스택에 쌓이게 된다. GEC는 코드를 실행하기 전에 쌓이고 모든 코드를 실행하면 제거된다. FEC는 호출할 떄 쌓이고 호출이 끝나면 제거된다.
참고 :
모던 자바 스크립트
깃허브 참고