관리 메뉴

bright jazz music

자바스크립트의 실행 컨텍스트 2 (실행 컨텍스트 객체에 담기는 정보) 본문

Language/Javascript

자바스크립트의 실행 컨텍스트 2 (실행 컨텍스트 객체에 담기는 정보)

bright jazz music 2025. 3. 12. 19:53

실행 컨텍스트가 활성화될 때 자바스크립트 엔진은 해당 컨텍스트에 관련된 코드들을 실행하는 데 필요한 환경 정보들을 수집해서 실행 컨텍스트 '객체'에 저장한다. 이러한 객체는 자바스크립트 엔진이 활용할 목적으로 생성하는 것이며, 개발자가 확인할 수는 없다.

 

실행 컨텍스트 객체에는 아래와 같은 값들이 담기게 된다.

 

  • VariableEnvironment
  • LexicalEnvironment
  • ThisBinding

 

1. VariableEnvironment

:  현재 컨텍스트 내의 식별자들에 대한 정보 + 외부 환경 정보 + '선언 시' LexicalEnvironment의 스냅샷이다.

실행 컨텍스트를 생성할 때 VariableEnvironment에 정보를 먼저 담은 다음, 이를 그대로 복사해서 LexicalEnvironment를 만든다. 이후에는 LexicalEnvironment를 주로 사용하게 된다. 어쨌든 두 값 모두 environmentRecord와 outerEnvironmentRecord로 구성돼 있다.

 

2. LexicalEnvironment

:  VariableEnvironment를 복사해서 사용하는 정보. environmentRecord와 outerEnvironmentRecord로 구성돼 있다.

 

2.3.1. environmentalHoisting

: 현재 컨텍스트와 관련된 코드의 식별자 정보들이 저장된다. 컨텍스트 내부 전체를 처음부터 끝까지 훑어나가며 '순서대로' 수집한다.

 

- 컨텍스트를 구성하는 함수에 지정된 매개변수 식별자

- 선언한 함수가 있을 경우 그 함수 자체, 

- var로 선언된 변수의 식별자 등

 

...

 

 

 

 

 

 

 

 

 

 

Comments