실행 컨텍스트, variable environment, lexical environment 개념

chanto11

·

2023. 4. 11. 23:42

실행 컨텍스트 (Execution Context) 

 

- 전역 실행 컨텍스트 : <script> 태그를 마주치면 생성. 실행시 필요한 정보들이 담겨있다.

 

- 함수 실행 컨텍스트 :  함수 단위 실행 환경, 함수의 호출로 call stack에 쌓이게 된다.

 

  • variable environment : 모든 식별자에 대한 정보를 담고 있는 객체.
    라이프 사이클 : 실행 컨텍스트 생성시 생성 -> 실행 컨텍스트 제거시 제거
  • lexical environment : 유효한 식별자들에 대한 정보를 담고 있는 객체.
    라이프 사이클 : 실행 컨텍스트 생성시 생성 -> 스코프 체인이 유지되는 동안 존재
    ※ lexical environment 객체는 가비지 컬렉터에 의해 제거됩니다.

예제

function outer() {   
  var a = 10;
  function inner() {
    console.log(a);
  }
  return inner;   // 2. variable environment 제거
}

var foo = outer(); // 1. variable environment, lexical environment 생성
foo(); // 10       // 3. lexical environment 유지
       //   [Global]-[lexical environment]-...-[lexical environment]-...[lexical environment]