
📌 "실행 컨텍스트(Execution Context)란 무엇인가요?"
실행 컨텍스트(Execution Context )는 실행 가능한 코드를 형상화하여 구분할 수 있게하는 추상적인 개념이다.
JavaScript 에서 실행 가능한 코드의 종류는 아래와 같다.
eval()로 실행되는 코드eval()은 코드를 그냥 실행하기 때문에 보안상에 취약하다.이러한 코드들을 실행하기 위해 JavaScript 엔진은 변수, 함수 선언, 변수의 유효 범위, this에 대한 정보를 알아야한다.
이러한 정보들을 물리적 객체의 형태로 나타낸 것을 실행 컨택스트라 한다.
전역 컨텍스트(Global Context )
window가 this로 할당되고 스택에 쌓인다.함수 컨텍스트(Function Context)
eval 함수 컨텍스트(Function Context)
eval()를 위한 실행 컨텍스트로서💡 이런 실행 컨텍스트들은 JavaScript 엔진의 call stack에 저장된다.
실행 컨텍스트 안에는 3가지 객체가 존재한다.
변수 객체(Variable Object )
Scope Chain

undefined를 반환한다.thisValue
this 값이 할당됨this 의 값이 결정되기 전 this 은 전역 객체를 가리키고 있음call, apply, bind), Construction, MethodInvocation 패턴에 의해 결정된다.window 등) 혹은 활성화 객체가 해당된다.💡 전역 컨텍스트는 변수 객체 를 가진다
- 전역 컨텍스트는 인수가 없기 때문에 활성 객체 가 필요하지 않다.
- 활성 객체 가 없으므로 대신 전역 객체 가 변수 객체 로 사용된다.
예제를 통해 컨텍스트의 생성과정을 말하면 아래와 같다.
var global = 1;
function test() {
var a = 1;
function inner() {
var b = 1;
console.log(a + b + golbal);
}
inner();
}
var obj = test();
위와 같은 코드를 실행시키면 초기에는 전역 컨텍스트가 생성되면서 한 줄씩 코드를 실행한다.
함수가 호출되는 경우 함수 컨텍스트가 생성된다.
이렇게 생성된 함수 컨텍스트들은 call stack에 쌓인다.

전역 컨텍스트 생성 및 함수호출 마다 컨텍스트들이 call stack에 쌓이면서 아래를 진행한다.
컨텍스트에 활성 객체(변수 객체) 생성
활성 객체(변수 객체)에 파라미터, 변수, 객체 정보를 저장
활성 객체(변수 객체) 내에 Scope Chain을 생성 ([[Scope]] 프로퍼티를 가지게 된다.)
활성 객체(변수 객체) 가 생성 및 변수 및 프로퍼티를 생성
undefined로 할당됨)this에 대한 정보를 저장하고 객체에 바인딩
call, apply, bind), Construction, MethodInvocation 패턴에 의해 결정된다.코드 실행