[javascript] 실행 컨텍스트 별로 각각의 scope chain이 어떻게 구성되는가?

실행 컨텍스트란?

각 실행 컨텍스트는 코드가 실행될 때 생성되는 개별적인 환경을 말합니다. 전역 실행 컨텍스트와 함수 실행 컨텍스트로 나뉘며, 각 실행 컨텍스트는 변수, 함수 선언 및 this 값을 포함합니다.

Scope Chain 구성

각 실행 컨텍스트는 Lexical Environment(렉시컬 환경)를 갖고 있으며, 이 환경에는 활성 객체와 외부 렉시컬 환경에 대한 참조가 있습니다. 외부 렉시컬 환경 참조를 통해 scope chain이 구성됩니다.

전역 실행 컨텍스트의 scope chain은 자기 자신만을 가지고 있고, 함수 실행 컨텍스트의 scope chain은 해당 함수의 렉시컬 환경, 외부 함수의 렉시컬 환경, 전역 렉시컬 환경의 순서로 구성됩니다.

// 예시 함수
function outerFunction() {
  var outerVar = 'outer';
  
  function innerFunction() {
    var innerVar = 'inner';
    // innerFunction의 scope chain: [inner 렉시컬 환경, outerFunction 렉시컬 환경, 전역 렉시컬 환경]
  }
}

결론

실행 컨텍스트 별로 scope chain이 독립적으로 구성되며, 각각의 scope chain은 해당 실행 컨텍스트의 렉시컬 환경 및 외부 렉시컬 환경에 따라 다르게 형성됩니다.

이를 통해 실행 컨텍스트 별로 scope chain이 어떻게 구성되는지 이해할 수 있습니다.

참고 자료: