개발개발
실행컨텍스트 정리
코드체이서
2023. 2. 11. 21:46
실행컨텍스트 유형
- 전역 실행 컨텍스트
기본 실행 컨텍스트로써 window
전역 컨텍스트를 생성하고, 이 전역객체를 this에 바인딩함.
- 함수 실행 컨텍스트
함수가 호출될때 마다 해당 함수에 대한 실행 컨텍스트가 생성됨.
- eval 실행 컨텍스트
eval 함수에서 실행되는 코드도 실행 컨텍스트를 가짐. eval()은 사용안하는게 좋으니까 생각하지말자.실행 스택
- 콜스택이라고 불리는 그것
- LIFO 구조
실행 컨텍스트 생성 과정
- 생성단계(Creation Phase)
- Lexical Environment 생성
각 변수(let
, const
),함수의 식별자에 실제 값, 객체에 대한 매핑이 이루어짐. Lexical Environment
에는 3개의 구성요소가 있음
- Environment Record
변수 및 함수 선언이 저장됨. 이또한 2가지 유형으로 나뉨
- Declarative environment record : 함수 코드의
Lexical Environment
에서는 선언적 환경 레코드가 포함됨
- Object environment record : 전역 코드의
Lexical Environment
에서는 객체 환경 레코드가 포함됨
- Reference to the outer environment
현재의 Lexical Environment
에서 변수를 찾지 못하면 외부 환경에서 해당 변수를 찾을 수 있도록하는 참조
- This binding
this
의 값이 설정됨.
- Variable Environment 생성
Lexical Environment
와 동일함. 단, 변수는 var
에 대해서만 맵핑이 이루어짐
- 실행단계(Execution Phase)