실행 컨텍스트
실행 컨텍스트(Execution Context)는 코드가 실행되는 환경 정보를 담은 객체입니다.
쉽게 말하면
JavaScript가 코드를 실행할 때 필요한 정보를 담아놓은 공간이에요.
담고 있는 정보
실행 컨텍스트 = {
변수들 (Variable Environment)
스코프 체인 (Scope Chain)
this
}
언제 생성되나?
// 1. 전역 코드 실행 시 → 전역 실행 컨텍스트 생성
let a = 1;
// 2. 함수 호출 시 → 함수 실행 컨텍스트 생성
function foo() {
let b = 2;
}
foo(); // 여기서 생성
콜 스택과 함께 동작
function first() {
console.log("first");
second();
}
function second() {
console.log("second");
}
first();
[콜 스택]
3. second 컨텍스트 ← 쌓임
2. first 컨텍스트
1. 전역 컨텍스트
실행 끝나면 위에서부터 제거됨
비유
| 비유 | 실행 컨텍스트 |
|---|---|
| 작업 공간 | 책상 위에 필요한 서류 펼쳐놓은 것 |
| 게임 | 현재 스테이지의 상태 정보 |
클로저와의 관계
function outer() {
let x = 10;
function inner() {
console.log(x);
}
return inner;
}
const fn = outer(); // outer 컨텍스트는 사라짐
fn(); // 그런데 x에 접근 가능 → 클로저!
inner 함수가 outer의 실행 컨텍스트(환경)를 기억하고 있기 때문에 가능해요.
한줄 요약
실행 컨텍스트 = 코드 실행에 필요한 변수, 스코프, this 등의 정보를 담은 환경