자바스크립트 실행 컨텍스트

Jeris·2023년 4월 14일
0

코드잇 부트캠프 0기

목록 보기
54/107

실행 컨텍스트란(Execution context)?

  • Execution context 실행할 코드에 제공할 환경 정보들을 모아 놓은 객체
  • 자바스크립트는 동일한 환경에 있는 실행 컨텍스트를 콜 스택에 쌓아올린 후 실행하여 코드의 환경과 순서를 보장할 수 있게 된다.

콜 스택에 실행 컨텍스트가 쌓이는 순서

  1. 전역 컨텍스트(Global context)를 콜 스택에 쌓는다.
  2. a의 실행 컨텍스트를 생성하고 콜 스택에 쌓고, 전역 컨텍스트와 관련된 코드의 실행을 일시적으로 중단하고 a 실행 컨텍스트의 코드를 실행한다.
  3. b의 실행 컨텍스트를 콜 스택에 쌓고, a와 관련된 코드의 실행을 일시적으로 중단하고 b 실행 컨텍스트의 코드를 실행한다.
  4. b 컨텍스트의 코드 실행이 종료되면 콜스택에서 제거된다. a 실행 컨텍스트의 코드 실행이 중단된 지점부터 코드가 실행된다.
  5. a 컨텍스트의 코드 실행이 조료되면 콜스택에서 제거된다. 전역 컨텍스트의 코드 실행이 중단된 지점부터 코드가 실행된다.

실행 컨텍스트의 내부 정보

  1. Execution contextVariable Environment, Outer Environment라는 Lexical Environment를 갖는다.
  2. Variable Environment 생성한 변수가 있는 위치에 대한 정보
  3. Lexical Environment environment record, outer environment reference로 구성된 환경
    1. environment record Environment 내의 식별자 정보(변수나 함수의 바인딩)를 포함하고 변수 객체를 관리하는 역할
    2. outer environment reference 상위 Lexical Environment에 대한 참조
      • 중첩된 자바스크립트 코드에서 스코프 탐색을 위해 사용한다.
  4. This Binding
    1. Global execution context에서 this는 global object를 가리킨다.
    2. Function execution context
      • 함수가 object reference로 호출되었다면 this는 해당 객체를 가리킨다.
      • 그렇지 않다면 this는 글로벌 객체(window)를 가리키거나 strict mode에서는 undefined를 가리킨다.



참고 자료

profile
job's done

0개의 댓글