실행컨텍스트의 정의
실행할 코드에 제공할 환경 정보들을 추상화하여 객체형태로 나타낸 것이다.
Context의 사전적 의미는 맥락, 문맥 이라는 뜻이다. Javascript에서 실행컨텍스트의 의미는 실행의 맥락, 전후사정을 의미한다. 자세히 식별자들(함수, 변수 등)을 등록하고 관리하는 스코프와 코드실행 순서를 관리하도록 구현한 내부 매커니즘이다. 모든 코드는 실행컨텍스트에서 실행되고 관리된다.
실행컨텍스트의 종류
- 전역실행 컨텍스트(Global Execution Context)
- 전역실행 컨텍스트는 스크립트 전체 중 가장 최상위에 위치하는 컨텍스트이다.
- 스크립트가 로드될 때 한 번만 생성된다.
- 전역변수와 전역함수를 포함한 모든 것들이 전역실행 컨텍스트 내에서 선언된다.
- 함수실행 컨텍스트(Function Execution Context)
- 함수를 호출할 때 마다 해당 함수의 실행 컨텍스트가 생성된다.
- 함수 내의 변수, 매개변수, 내부 함수 등이 해당 실행 컨텍스트 내에서 선언된다.
- 각 함수실행 컨텍스트는 자신만의 스코프를 가진다.
- 함수가 반환되면 해당 컨텍스트는 제거된다.
- Eval 실행 컨텍스트(Eval Execution Context)
- eval() 함수를 사용하여 실행되는 코드의 컨텍스트이다.
- 일반적으로 보안문제 등으로 잘 사용되지 않는다.
실행컨텍스트의 구성요소
- Execution Context
- Variabl eEnvironment
- 변수와 함수의 선언을 저장한다.
- 식별자와 값을 매핑하는데 사용된다.
- 선언시점의 Lexical Environment의 스냅샷을 유지하며 변경되지 않는다.
- Lexical Environment
- 초기 Variable Environment와 같은 환경을 참조한다.
- 함수 실행 도중에 스코프가 변경되거나 클로저와 같은 언어적 특성에 의해 스코프 체인이 변경되면, Variable Environmnet와 Lexical Environment는 서로 다른 내용을 가지게 된다.
- thisBinding
- this 키워드가 참조하는 값이다.
- 호출방식에 따라 동적으로 결정되고 default로 전역객체(window)를 참조한다.
- Variabl eEnvironment
- Lexical Environment
- Environment Record
- 해당 스코프에 포함된 식별자를 등록하고 등록된 식별자에 바인딩된 값을 관리한다.
- Outer Lexical Environment Reference
- 상위 스코프(외부 렉시컬 환경)를 가리킨다.
- 스코프 체이닝 메커니즘의 핵심요소다.
- Environment Record
'TIL' 카테고리의 다른 글
[JS] 클로저(Closure) (0) | 2023.07.18 |
---|---|
[JS] 변수와 함수 호이스팅(Hoisting) (0) | 2023.07.17 |
[JS] 화살표함수(Arrow Function)와 this (0) | 2023.07.10 |
[JS] let | var | const (0) | 2023.07.09 |
[JS] e.preventDefault() & e.stopPropagation() (0) | 2023.07.08 |