23장 : 실행 컨텍스트(2)
by 담담이담5. 렉시컬 환경
1) 렉시컬 환경이란?
식별자와 식별자에 바인딩 된 값,
상위 스코프에 대한 참조를 기록하는 자료구조
즉, 스코프와 식별자를 관리한다.
실행 컨텍스트의 구성요소이다.
(cf. 실행 컨텍스트의 구성요소에는 앞서 본 스택과 렉시컬 환경이 존재한다.)
렉시컬 환경은 스코프를 생성한다.
스코프는 키와 값을 갖는 객체 형태이며,
전역, 함수, 블록 스코프가 존재한다.
이 때, 식별자를 key로 등록하고,
식별자에 바인딩된 값을 value로 등록한다.
2) 렉시컬 환경의 구성요소
i) 환경 레코드
스코프에 포함된 식별자를 등록하고,
등록된 식별자에 바인딩 된 값을 관리하는 저장소
소스코드 타입에 따라 관리하는 내용에 차이가 존재한다.
ii) 외부 렉시컬 환경에 대한 참조
상위스코프를 가르킨다.
상위 스코프란 외부 렉시컬 환경을 의미하며,
해당 실행 컨텍스트를 생성한 소스코드를 포함하는 상위 코드의 렉시컬 환경을 의미한다.
외부 렉시컬 환경에 대한 참조를 통해 단방향 링크드 리스트인 스코프 체인을 구현한다.
6. 실행 컨텍스트의 생성과 식별자 검색 과정
var x = 1;
const y = 2;
function foo (a) {
var x = 3;
const y = 4;
function bar (b) {
const z = 5;
console.log(a + b + x + y + z);
}
bar(10);
}
foo(20); // 42
1) 전역 객체 생성
전역 객체는 전역 코드가 평가되기 이전에 생성된다.
전역 객체는 빌트인 전역 프로퍼티, 빌트인 전역 함수, 표준 빌트인 객체,
동작 환경에 따라 클라이언트 사이드 Web API,
특정 환경을 위한 호스트 객체를 포함한다.
전역 객체도 Object.prototype을 상속받아, 프로토타입 체인의 일원이다.
2) 전역 코드 평가