JavaScript/3주차

7. record와 호이스팅 1

tnals634 2023. 5. 24. 16:16

실행 컨텍스트 객체의 실체 (=담기는 정보)

 - 1. variableEnvironment(VE)

     - 현재 컨텍스트 내의 식별자 정보(=record)를 갖고 있다.

          - 1. var a = 3

          - 2. 위의 경우, var a를 의미

 

     - 외부 환경 정보(=outer)를 갖고 있다.

     

     - 선언 시점 LexicalEnvironment 의 snapshot

 

 - 2. LexicalEnvironment(LE)

     - VariableEnvironment와 동일하지만, 변경사항을 실시간으로 반영.

 

 - 3. ThisBinding

     - this 식별자가 바라봐야할 객체

 

 

VE vs LE

- 이 두가지는 완벽하게 동일, 그러나 스냅샷 유지여부가 다르다.

     - 1. VE : 스냅샷 유지 O

     - 2. LE : 스냅샷 유지 X , 실시간으로 변경사항을 계속해서 반영

 

※ 실행 컨텍스트를 생성할때, VE에 정보를 먼저 담은 다음 → 아를 그대로 복사해서 LE를 만들고 이후에는 주로 LE를 활용

 

 

◎ Record

 - 1. 현재 컨텍스트와 관련된 코드의 식별자 정보들을 저장.

 - 2. 수집 대상 정보 : 함수에 지정된 매개변수 식별자, 함수 자체, var로 선언된 변수 식별자 등

 - 3. 컨텍스트 내부를 처음부터 끝까지 순서대로 훓어가며 수집 (실행x)

 

 - 호이스팅

     - 식별자 정보만 위로 다 끌어올린다.

     - 가상개념

 

     - 규칙

          - 1. 매개변수 및 면수는 선언부를 호이스팅 한다.

          - 2. 함수 선언은 전체를 호이스팅 한다.

 

'JavaScript > 3주차' 카테고리의 다른 글

9. outer  (0) 2023.05.24
8. record와 호이스팅 2 (함수의 호이스팅)  (0) 2023.05.24
6. 실행 컨텍스트 및 콜 스택 소개  (0) 2023.05.24
5. null과 undefined  (0) 2023.05.24
4. 불변 객체(얕은 복사 , 깊은 복사)  (0) 2023.05.24