실행 컨텍스트(Execution Context)
자바스크립트의 실행 컨텍스트(Execution Context)는 코드가 실행되기 위한 환경이라고 볼 수 있다.
코드가 실행될 때, 자바스크립트 엔진은 실행 컨텍스트를 생성하고 이를 실행 컨텍스트 스택(Execution Context Stack)에 쌓아 나가면서 코드를 실행해 나간다. 실행 컨텍스트는 크게 세가지로 나뉜다
- 글로벌 실행 컨텍스트(Global Execution Context)
- 함수 실행 컨텍스트(Function Execution Context)
- eval 실행 컨텍스트(Eval Execution Context)
글로벌 실행 컨텍스트
- 자바스크립트 코드가 처음 실행될 때 만들어지는 기본적인 실행 컨텍스트
- 전역 객체와 전역 변수를 관리함
함수 실행 컨텍스트
- 함수가 호출될 때 마다 새로운 실행 컨텍스트가 생성된다.
- 해달 함수의 지역 변수, 매개변수, this 값 등을 관리한다.
ex)
var x = '글로벌'; // 글로벌 실행 컨텍스트에서 선언된 변수
function outer() { // outer 함수 실행 컨텍스트
var y = '아우터';
console.log(x); // '글로벌'
console.log(y); // '아우터'
function inner() { // inner 함수 실행 컨텍스트
var z = '이너';
console.log(x); // '글로벌'
console.log(y); // '아우터'
console.log(z); // '이너'
}
inner();
}
outer();
함수를 실행하면 다음과 같은 순서로 실행 컨텍스트가 생성되고 소멸한다.
- 자바스크립트 실행 초기에 글로벌 실행 컨텍스트가 생성
- outer 함수가 호출되면서 outer 함수의 실행 컨텍스트가 생성되고, 실행 컨텍스트 스택의 맨 위에 위치하게 된다.
- outer 함수 내부에서 inner 함수가 호출되면, inner 함수의 실행 컨텍스트가 생성되고, 마찬가지로 실행 컨텍스트 스택의 맨 위에 위치하게 된다.
- inner 함수가 종료되면, inner함수의 실행 컨텍스트가 스택에서 제거된다.
- outer함수가 종료되면 outer 함수의 실행 컨텍스트도 스택에서 제거된다.
- 프로그램 실행이 완료되면 글로벌 실행 컨텍스트도 스택에서 제거된다.
'Programming > JavaScript' 카테고리의 다른 글
바닐라 자바스크립트 + npm (0) | 2024.03.20 |
---|---|
This에 관하여 (0) | 2024.03.08 |
Promise/Callback 에 관한 고찰 (0) | 2024.03.04 |
async/await 문법 (0) | 2024.03.04 |
var, let. const의 차이 (0) | 2024.02.28 |