티스토리 뷰
반응형
실행 컨텍스트는 실행한 코드에 제공 할 환경 정보들을 모아놓는 객체라고 생각하자.
콜 스택에 쌓아서 전체 코드를 관리하고 있어서 환경과 순서를 보장한다.
동작
실행 컨텍스트는 크게 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는 함수호출 방식 및 전역 여부에 따라 결정)
반응형
'개념' 카테고리의 다른 글
웹 컴포넌트 스타일링 관리 (CSS-in-HTML, CSS-in-CSS, CSS-in-JS) (1) | 2025.02.14 |
---|---|
원링크 (One Link), 딥 링크(Deep Link), 디퍼드 딥 링크 (Deferred Deep Link) - 웹뷰와의 통신 (0) | 2024.12.02 |
Bfcache (Back-Forward Cache) (0) | 2024.12.01 |
04. 호이스팅(Hoisting)에 대해 간단히 설명해주세요 (0) | 2022.09.11 |
02. 홈페이지가 사용자에게 웹 사이트를 보여주는 과정을 간략히 설명해주세요. (브라우저 렌더링 포함) (0) | 2022.09.07 |
01. 브라우저 구조에 대해 간략히 설명해주세요. (0) | 2022.09.07 |
URI? URL? 같은거 아니었어? 엥 URN은 또 뭐야? (0) | 2021.08.30 |
사용자 인증? 토큰? JWT(Json Web Token)란 뭘까? (0) | 2021.08.25 |