728x90
- 자바스크립트의 모든 코드를 관리하는 실체
Lexical Environment
와Variable Environment
로 이뤄짐
소스코드 타입
- 전역 코드 : 전역에 존재하는 소스코드. 함수/클래스의 내부 코드는 포함X
- 전역 스코프 생성
- 전역 객체와 연결
- 코드 평가 후 전역 실행 컨텍스트 생성
- 함수 코드 : 함수 내부에 존재하는 소스코드
- 지역 스코프 생성
- 전역 스코프에 스코프 체인
- 코드 평가 후 함수 실행 컨텍스트 생성
- eval 코드 :
eval
의 인수로 전달되는 소스코드Strict mode
에서 자신만의 독자적인 스코프 생성- 코드 평가 후 eval 실행 컨텍스트 생성
- 모듈 코드 : 모듈 내부에 존재하는 소스코드
- 모듈별 모듈 스코프 생성
- 코드 평가 후 모듈 실행 컨텍스트 생성
소스코드의 평가와 실행
- 자바스크립트 엔진은 소스코드를 평가-실행 과정으로 나누어서 처리함
- 평가 : 변수/함수 식별자를 실행 컨텍스트의 렉시컬 환경의 환경 레코드에 등록
- 실행 : 런타임. 필요한 정보를 실행 컨텍스트에서 검색해서 사용
실행 컨텍스트의 역할
- 식별자를 등록하고 관리하는 스코프, 코드 실행 순서를 관리하는 내부 메커니즘
- 모든 코드는 실행 컨텍스트를 통해서 실행되고 관리됨
- 식별자, 스코프 --> 렉시컬 환경에서 관리
- 코드 실행 순서 --> 실행 컨텍스트 스택으로 관리
실행 컨텍스트 스택
- 실행 컨텍스트 스택의
top
에는 항상 현재 실행중인 코드의 실행 컨텍스트가 있음 top
=== 실행중인 실행 컨텍스트
렉시컬 환경
- 실행 컨텍스트의 컴포넌트
- 키, 값 구조의 객체 형태로 스코프를 생성하여 식별자를 키로 등록하고 식별자에 바인딩된 값 관리
- 렉시컬 스코프의 실체
- 환경 레코드와 외부 렉시컬 환경에 대한 참조로 이뤄짐
- 환경 레코드 : 스코프에 포함된 식별자와 값을 관리
- 객체 환경 레코드 : var 변수, 전역 함수, 빌트인 객체 등
- 선언적 환경 레코드 : let, const 변수 등
- 외부 렉시컬 환경에 대한 참조 : 상위 코드의 렉시컬 환경
- 환경 레코드 : 스코프에 포함된 식별자와 값을 관리
학습 도서
- '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스
'Language | Basic > JavaScript' 카테고리의 다른 글
[JavaScript 스터디] 클래스 (0) | 2021.02.01 |
---|---|
[JavaScript 스터디] 클로저 (0) | 2021.02.01 |
[JavaScript 스터디] this (0) | 2021.02.01 |
[JavaScript 스터디] 빌트인 객체 (0) | 2021.01.31 |
[JavaScript 스터디] strict mode (0) | 2021.01.30 |