실행 컨텍스트(Execution Context)는 JavaScript 코드가 평가되고 실행되는 환경의 추상적인 개념이다
실행 컨텍스트는 코드가 실행되기 위해 필요한 모든 정보를 담고 있으며,
JavaScript 엔진이 스크립트를 실행할 때 코드의 실행 순서를 관리하고 변수 및 함수의 스코프를 결정하는 데 사용된다
JavaScript에서 실행 컨텍스트는 크게 세 가지 유형으로 분류된다
- 전역 실행 컨텍스트(Global Execution Context)
- 코드가 실행되기 시작할 때 JavaScript 엔진에 의해 생성되는 기본 컨텍스트
- 이는 전역 변수와 함수를 포함하며, 스크립트가 로드될 때 단 하나만 생성된다
- 함수 실행 컨텍스트(Function Execution Context)
- 함수가 호출될 때마다 생성된다
- 각 함수 호출마다 고유한 실행 컨텍스트가 생성되어 해당 함수 실행에 필요한 환경 정보(매개변수, 지역 변수 등)를 담는다
- 평가 실행 컨텍스트(Eval Execution Context)
- eval 함수가 호출될 때 생성된다
- eval은 자주 사용되지 않으며, 보안상의 이유로 사용을 권장하지 않는다
실행 컨텍스트의 구성 요소
각 실행 컨텍스트는 다음과 같은 주요 구성 요소를 포함한다
- 변수 객체(Variable Object)
- 현재 컨텍스트 내의 변수, 함수 선언, 함수 매개변수 등의 정보를 담고 있다
- 스코프 체인(Scope Chain)
- 현재 컨텍스트와 외부 컨텍스트의 변수에 접근할 수 있는 스코프의 리스트다
- 이를 통해 변수의 유효 범위와 스코프를 결정한다
- this 값
- 현재 컨텍스트에서 this 키워드의 값을 결정한다
- this의 값은 함수 호출 방식에 따라 달라진다 (예: 객체의 메서드로 호출될 때와 일반 함수로 호출될 때)
실행 과정
- 전역 실행 컨텍스트 생성
- 스크립트 로딩 시 전역 컨텍스트가 생성된다
- 전역 변수와 함수가 여기에 포함된다
- 함수 호출 시 함수 실행 컨텍스트 생성
- 함수가 호출될 때마다 새로운 함수 실행 컨텍스트가 스택에 푸시된다
- 이 컨텍스트는 함수의 로컬 변수, 매개변수, 그리고 해당 함수 실행에 필요한 다른 정보를 포함한다
- 실행 컨텍스트 스택(Execution Context Stack)
- 이 스택(콜 스택이라고도 함)은 코드 실행 중 생성된 모든 실행 컨텍스트를 추적한다
- JavaScript 엔진은 스택의 최상위에 있는 실행 컨텍스트를 사용하여 현재 실행 중인 코드를 관리한다
- 함수 실행이 완료되면 해당 함수의 실행 컨텍스트는 스택에서 제거(pop)된다
실행 컨텍스트는 JavaScript의 핵심적인 동작 원리 중 하나로,
코드의 실행 순서, 스코프 결정, 변수 생명 주기 관리 등을 이해하는 데 중요한 역할을 한다
'Frontend' 카테고리의 다른 글
자바스크립트 데이터 타입 (4) | 2024.03.05 |
---|---|
자바스크립트 형 변환 (0) | 2024.03.05 |
렉시컬 환경이란 (0) | 2024.03.04 |
함수 선언형과 함수 표현식의 차이 (0) | 2024.03.04 |
var, let, const 차이 (0) | 2024.03.04 |