2-2 VariableEnvironment

현재 컨텍스트를 구성하는 환경 정보들과 식별자 정보를 담고 있다.

<aside> 💡 VariableEnvironment는 최초 실행 시 컨텍스트 내의 식별자 + 외부 환경 정보의 스냅샷을 저장한다.

</aside>

맨 처음 실행 컨텍스트가 활성화될 때 VariableEnvironment와 LexicalEnvironment는 같은 정보를 저장한다. 이후 코드 진행에 따라 LexicalEnvironment의 값은 달라지는데에 비해 VariableEnvironment의 값은 변하지 않는다.

2-3 LexicalEnvironment

<aside> 💡 LexicalEnvironment는 현재 계속 변화하는 컨텍스트 내의 식별자 + 외부 환경 정보를 저장한다.

</aside>

VariableEnvironment와 LexicalEnvironment은 크게 두 가지 구성 요소를 가진다.

2-3-0 Lexical Scope?

자바스크립트는 정적 스코프 언어이다.

자바스크립트의 환경은 함수가 호출될 때가 아닌 선언될 때 결정된다. 실행될 때는 선언 시 이미 결정된 환경을 참조하기 때문에, 정적 스코핑이라 한다.

2-3-1 environmentRecord와 호이스팅

<aside> 💡 environmentRecord는 현재 컨텍스트와 관련된 코드의 식별자 정보들이 저장된다.

</aside>