개념
03. 실행 컨텍스트(Execution Context)에 대해 설명해주세요.
주섬이
2022. 9. 11. 18:26
반응형
실행 컨텍스트는 실행한 코드에 제공 할 환경 정보들을 모아놓는 객체라고 생각하자.
콜 스택에 쌓아서 전체 코드를 관리하고 있어서 환경과 순서를 보장한다.
동작
실행 컨텍스트는 크게 3가지 동작을 한다.
- 내부 환경 정보 기록: 실행컨텍스트가 활성화 되는 시점(실행)에 선언된 변수를 수집한다.
- 외부 환경 정보를 구성한다.
- this 값을 설정하는 동작 구성
수집 정보
- 자바스크립트 엔진이 활용할 목적으로 생성할 뿐, 개발자가 코드에 접근 할 수 없다.
Variable Environment
- 선언 시점의 Lexical Environment의 스냅샷이므로 변경사항이 반영되지 않는다.
- Variable Environment를 생성하여 정보를 담고 복사하여 Lexical Environment를 만든다.
Lexical Environment
처음엔 Variable Environment와 같으나 변경사항이 실시간으로 반영된다. (이후에는 Lexical을 사용하는 이유)
- Environment Record (환경 기록)
- 현재 컨텍스트내의 식별자(변수명, 함수명, 매개변수명....) 들에 대한 정보를 순서대로 저장한다.
- 이때 정보의 수집을 마치게되면 실행컨텍스트가 관여할 코드들은 실행전이지만, 자바스크립트 엔진은 이미 해당 환경에 속해 있는 정보(변수명..)들을 알고 있기 때문에 '호이스팅'이 발생 할 수 있다.
- Outer-Environment Reference (외부 환경 참조)
- 현재 호출된 함수가 선언된 당시 상위의 Lexical Environment를 참조한다.
- 스코프 체인이 가능하게 하는 수집자료 (중첩된 자바스크립트 코드에서 스코프 탐색을 하기위해 사용)
This Binding
- this 식별자가 바라봐야 할 대상 객체
- 실행 컨텍스트 활성화 당시에 this로 지정된 객체가 저장된다. (this는 함수호출 방식 및 전역 여부에 따라 결정)
반응형