실행 컨텍스트(Execution Context)

CC·2022년 7월 1일
0
post-custom-banner

ECMAScript에서는 실행 컨텍스트를 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념으로 기술한다.
실행 가능한 자바스크립트 코드 블록(함수)이 실행되는 환경이라고 할 수 있다.

다음은 실행 컨텍스트가 형성되는 경우이다.

  • 전역코드
  • eval()
  • 함수
  • module

코드를 실행하면 스택(stack)이 생성하고 소멸한다.
콜 스택(call stack)이란 함수를 호출할 때 해당 함수의 호출 정보가 쌓여있는 스택이다.
콜 스택의 호출 정보 등으로 코드의 실행 과정을 추적하여 디버깅을 한다.

코드 블록 안에 변수, 객체, 코드 등이 들어있는데 코드가 실행되면 실행 컨텍스트가 생성되고, 실행 컨텍스트는 스택 안에 차곡차곡 쌓인다.

실행 컨텍스트의 3가지 객체

  1. Variable Environment - 현재 환경과 관련된 식별자 정보들이 담긴다. => 수집
  2. Lexical Environment - 현재 환경과 관련된 식별자 정보들이 담긴다. => 데이터를 추적. 변화가 실시간으로 반영됨
    2-1. environment record 환경기록 - 현재 컨텍스트 내의 식별자 정보 (호이스팅)
    2-2. outer environment record 외부 환경 참조 - 현재 컨텍스트와 관련 있는 외부 식별자 정보 (스코프 체인)
  3. this

스코프 체인은 식별자 중 객체(전역 객체 제외)의 프로퍼티가 아닌 식별자, 즉 변수를 검색하는 메커니즘이다.
식별자 중에서 프로퍼티(메소드 포함)를 검색하는 메커니즘은 프로토타입 체인이다.

각 함수 객체는 [[scope]] 프로퍼티로 현재 컨텍스트의 스코프 체인을 참조한다.
outer함수 안에서 inner함수가 실행될 때, 현재 실행되는 함수 객체(outer)의 [[scope]] 프로퍼티를 복사하고, 새롭게 생성된 변수 객체(inner 함수의 변수 객체)를 해당 체인의 맨 앞에 추가한다.

스코프체인 = 현재 실행 컨텍스트의 변수 객체 + 상위 컨텍스트의 스코프 체인

post-custom-banner

0개의 댓글