ECMAScript에서는 실행 컨텍스트를 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념으로 기술한다.
즉 실행 가능한 자바스크립트 코드 블록(함수)이 실행되는 환경이라고 할 수 있다.
다음은 실행 컨텍스트가 형성되는 경우이다.
코드를 실행하면 스택(stack)이 생성하고 소멸한다.
콜 스택(call stack)이란 함수를 호출할 때 해당 함수의 호출 정보가 쌓여있는 스택이다.
콜 스택의 호출 정보 등으로 코드의 실행 과정을 추적하여 디버깅을 한다.
코드 블록 안에 변수, 객체, 코드 등이 들어있는데 코드가 실행되면 실행 컨텍스트가 생성되고, 실행 컨텍스트는 스택 안에 차곡차곡 쌓인다.
스코프 체인은 식별자 중 객체(전역 객체 제외)의 프로퍼티가 아닌 식별자, 즉 변수를 검색하는 메커니즘이다.
식별자 중에서 프로퍼티(메소드 포함)를 검색하는 메커니즘은 프로토타입 체인이다.
각 함수 객체는 [[scope]]
프로퍼티로 현재 컨텍스트의 스코프 체인을 참조한다.
outer함수 안에서 inner함수가 실행될 때, 현재 실행되는 함수 객체(outer)의 [[scope]]
프로퍼티를 복사하고, 새롭게 생성된 변수 객체(inner 함수의 변수 객체)를 해당 체인의 맨 앞에 추가한다.
스코프체인 = 현재 실행 컨텍스트의 변수 객체 + 상위 컨텍스트의 스코프 체인