반응형
배경 지식
Scope : 범위
Scope Chain : 자신과 상위 Scope들의 변수 객체들을 꼬리를 물고 범위를 넓히며 사슬 처럼 얽혀있어 찾을 수 있는 것이다.
Lexical Scope : [[ 자신의 환경 ]], 처음 선언하는 순간! 변수는 자신의 Scope로부터 가장 가까운 곳(상위 범위에서)에 있는 변수를 계속 참조하게 됩니다, 해당하는 값이 없다면 외부 렉시컬환경을 참조한다.
Context란?
- 문맥, 맥락, 전후 사정이라는 의미이다.
- 그 문맥, 맥락, 전후 사정을 Scope(범위)의 맥락으로 이해하면 된다.
실행 Context란?
- 실행 중의 문맥, 맥락, 전후 사정, 환경이라는 의미이다.
- 모든 코드는 실행 Context를 통해 실행되고 관리된다.
- 코드 실행 순서는 실행 Context Stack으로 관리한다.
- 가장 위의 있는 것이 현재 실행 코드이다.
- 식별자와 스코프는 실행 Context의 Lexical Scope로 관리한다.
실행 Context와 연관 된 것
- 식별자와 식별자에 바인딩된 값(식별자 바인딩)을 관리하는 방법
- 호이스팅
- 클로저
- 태스크 큐와 함께 동작하는 이벤트 핸들러
- 비동기 처리의 동작방식
- 모든 소스코드는 소스코드의 평가와 소스코드의 실행으로 나누어 처리한다.
- 평가 과정에서 실행 Context를 생성하여 실행Context가 관리하는 Scope(렉시컬 환경의 환경레코드)로 등록한다.
- 실행과정에서 실행 Context가 관리하는 Scope에서 검색하여 취득한다.
- 만약 x를 사용하려고 한다면
- 실행컨텍스트가 관리하는 스코프에 x가 등록되어있는지 확인한다.
- 즉, 자신의 실행컨텍스트의 스코프인지 확인한다.
- 실행컨텍스트가 관리하는 스코프에 x가 등록되어있는지 확인한다.
- 스코프는 중첩관계에 의해 스코프 체인을 형성해야한다.
- 생성한 지역 Scope를 전역 Scope에서 시작하는 Scope Chain으로 연결해야 한다.
- 스코프체인을 통해 상위 스코프로 이동하며 식별자를 검색할 수 있어야한다.
- 현재 실행 중인 코드의 실행 순서를 변경(예를들어 함수호출에 의한 실행 순서 변경)을 할 수 있어야 하며 다시 되돌아갈 수도 있어야한다.
이 모든 것을 관리하는 것이 실행 Context이다
REF : 모던 자바스크립트 Deep Dive, zerocho 블로그
반응형
'Frontend' 카테고리의 다른 글
코딩 컨벤션 (0) | 2022.06.19 |
---|---|
클로저 (0) | 2022.06.19 |
SOLID 원칙 총정리 (0) | 2022.06.17 |
Event Bubbling & Capturing (0) | 2022.06.17 |
세션, 쿠키, 토큰, JWT, refrash 토큰 (0) | 2022.06.17 |