코드에 제공되는 환경정보를 모아놓은 객체
선언 시점의 컨텍스트 내, 외부 환경정보 스냅샷
- 변경사항 반영되지 않는다.
실시간 컨텍스트 내, 외부 환경정보
- 변경사항이 실시간으로 반영된다.
- Lexical : 어휘적, 정적, 사전적인 이라는 의미를 가진다.
- LexicalEnvironment 에서 쓰인 의미는 컨텍스트를 구성하는 환경정보를 사전(무슨 식별자가 있고 외부 정보는 무얼 참조하는지 등)으로 모아놓았다는 의미로 해석하면 된다.
컨텍스트와 관련된 코드와 식별자 정보
- 함수 내부(코드)를 순서대로 훓으며 매개변수, 함수, 변수 등의 식별자를 수집한다.
- 코드가 실행되기전에 실행 컨텍스트에 변수 정보가 수집된다.
- Hoisting
- 끌어올리다 라는 의미의 동명사
- 자바스크립트 엔진이 코드가 실행되기전부터 해당 환경에 속한 변수명들을 알고 있는 것에서 비롯된 가상의 개념
- 실제 동작과는 다르게 이해하기 쉽도록 자바스크립트 엔진이 식별자들을 최상단으로 끌어올려놓은 다음 실제 코드를 실행한다 고 간주한다.
- 변수의 선언부를 상단으로 끌어올리고 할당은 원래자리에 남겨둔다. 단, 함수는 전체(할당까지) 다 끌어올린다.