728x90
실행 컨텍스트(Execution Context)
실행 컨텍스트는 자바스크립트 코드가 실행되는 환경을 정의하는 개념으로, 스크립트나 함수 실행 시 관련 변수, 객체, 함수 등의 정보를 담고 있는 구조이다.
자바스크립트의 스코프, 호이스팅, 클로저 등을 이해하는 핵심 개념이기 때문에 중요하다.
실행 컨텍스트의 구성 요소
- 변수 객체(Variable Environment)
- 실행 컨텍스트 내에서 선언된 변수, 함수 선언, this 값을 저장하는 공간이며, 변수 선언 및 함수 선언을 위한 호이스팅이 이 단계에서 처리된다.
- 초기화 시점에는 함수 선언만 포함되며, 변수는 undefined로 초기화된다.
- 스코프 체인(Scope Chain)
- 현재 컨텍스트와 부모 컨텍스트를 참조할 수 있는 링크 체인이며, 변수를 검색할 때 가장 먼저 현재 컨텍스트에서 찾고, 없으면 상위 컨텍스트로 올라가며 찾는다.
- this 바인딩
- 실행 컨텍스트에 연결된 this 값이며, 함수 호출 방식에 따라 달라진다.
- 일반 함수 호출: 전역 객체 (window 또는 global)
- 메소드 호출: 해당 객체
- 새로운 호출: 새로 생성된 객체
- 화살표 함수: 선언된 위치의 상위 컨텍스트에서 this를 상속
- 실행 컨텍스트에 연결된 this 값이며, 함수 호출 방식에 따라 달라진다.
실행 컨텍스트의 종류
- 전역 실행 컨텍스트
- 자바스크립트 코드가 처음 실행될 때 생성되며, 전역 객체와 연결된다.
- 브라우저 환경에서는 window 객체가 전역 객체이다.
- 함수 실행 컨텍스트
- 함수가 호출될 때마다 생성되며, 각 함수 실행 컨텍스트는 독립적으로 존재하고 함수 호출이 끝나면 메모리에서 사라진다.
실행 컨텍스트의 생성 과정
- 생성 단계
- 변수 객체가 생성되고, 함수 선언은 메모리에 등록되며, 변수는 undefined로 초기화된다.
- 초기화 단계
- 변수에 값이 할당되고, 함수의 코드가 준비되며, this 바인딩이 결정된다.
- 코드 실행 단계
- 코드를 순차적으로 실행하며, 변수와 함수 호출을 처리한다.
실행 컨텍스트 스택
실행 컨텍스트는 스택 형태로 관리된다.
- 코드 실행이 시작되면 전역 실행 컨텍스트가 스택에 쌓임
- 함수가 호출될 때마다 새로운 실행 컨텍스트가 생성되어 스택의 최상단에 추가
- 함수 실행이 종료되면 해당 실행 컨텍스트는 스택에서 제거
728x90
'개발 TIL' 카테고리의 다른 글
이벤트 루프 (Event Loop) (0) | 2025.01.10 |
---|---|
Tanstack-query (0) | 2025.01.09 |
Reflow와 Repaint (0) | 2025.01.08 |
클로저(Closure) (0) | 2025.01.07 |
SOLID 원칙 (0) | 2025.01.06 |