01_실행컨텍스트

1. 개념

  1. 실행할 코드에 제공할 환경정보를 모아놓은 객체

  2. 동일한 환경에 있는 환경 정보들을 모은 실행컨텍스트를 콜스택에 쌓아올린 후 실행한다.

2. 역할 및 기능

  1. 코드의 환경과 순서를 보장

  2. FILO 구조이기 때문에 순서를 보장

  3. 내부에 쌓인 정보를 통해 환경을 보장 (전역 공간 or 함수 내부의 환경 like closure)

  4. (ex) 전역(Global) 컨텍스트:

    1. JS가 실행되는 순간 콜스택에 담김

    2. browser에서 window.~, node의 경우 global.~를 사용할 수 있는 이유

3. 내용

  1. 변수 환경(Variable Environment):

    1. 그대로 Lexical Environment(문법 환경)에 복사

    2. 내부의 식별자 정보(Environment Record)

    3. 외부 환경 정보(Outer Environment Reference)

  2. 문법 환경(Lexical Environment):

    1. 변수 환경 복사 후 변경사항이 실시간으로 적용됨

    2. 변수 환경의 초기 상태를 기억

    3. 문법 환경의 최신 상태를 저장

  3. 식별자 정보(Environment Record):

    1. 현재 컨텍스트와 관련된 식별자와 식별자에 바인딩된 값이 기록됨

    2. 실행컨텍스트 내부 전체를 처음부터 끝까지 확인하며 순서대로 수집

    3. 호이스팅의 원인!!!

      1. 함수 실행시 실행 컨텍스트가 먼저 생성되므로

      2. Environment Record 즉 식별자 수집이 먼저 되므로

      3. 변수와 같은 식별자를 끌어올리는 것 같다. 는 호이스팅이라는 현상이 생겼습니다.

  4. 외부 환경 정보(Outer Environment Reference):

    1. 스코프 체인, 클로저를 가능케하는 요소

    2. 현재 함수가 선언될 당시의 실시간 문법 환경(Lexical Environment)

  5. ThisBinding:

    1. 실행 컨텍스트 생성 시, 즉 함수가 호출될 때 할당되는 this의 정보를 담고 있음

Last updated