실행 컨텍스트란?

코드에 제공되는 환경정보를 모아놓은 객체

실행 컨텍스트 흐름

  1. 콜 스택에는 전역 컨텍스트를 시작으로 함수가 호출될 때 마다 컨텍스트가 쌓인다.
    • 전역 컨텍스트 : 브라우저가 자동 실행한 최상단 코드의 컨텍스트
  2. 콜 스택 상단에 있는 컨텍스트와 관련된 코드가 순차적으로 실행된다.
    • 실행도중 함수를 만나면 현재 실행중인 컨텍스트를 중지하고 새로 쌓인 컨텍스트와 관련된 코드를 실행한다.
  3. 코드의 실행이 종료될 때 현재 실행중인 컨텍스트가 콜스택에서 제거 된다.
  4. 전역 공간에 더는 실행할 코드가 남아 있지 않아 전역 컨텍스트가 제거되면 콜 스택이 빈 상태로 종료된다.

실행 컨텍스트에 담기는 정보들

  • VariableEnvironment

    선언 시점의 컨텍스트 내, 외부 환경정보 스냅샷

    • 변경사항 반영되지 않는다.
  • LexicalEnvironment

    실시간 컨텍스트 내, 외부 환경정보

    • 변경사항이 실시간으로 반영된다.
    • Lexical : 어휘적, 정적, 사전적인 이라는 의미를 가진다.
    • LexicalEnvironment 에서 쓰인 의미는 컨텍스트를 구성하는 환경정보를 사전(무슨 식별자가 있고 외부 정보는 무얼 참조하는지 등)으로 모아놓았다는 의미로 해석하면 된다.
  • EnvironmentRecord

    컨텍스트와 관련된 코드와 식별자 정보

    • 함수 내부(코드)를 순서대로 훓으며 매개변수, 함수, 변수 등의 식별자를 수집한다.
    • 코드가 실행되기전에 실행 컨텍스트에 변수 정보가 수집된다.
    • Hoisting
      • 끌어올리다 라는 의미의 동명사
      • 자바스크립트 엔진이 코드가 실행되기전부터 해당 환경에 속한 변수명들을 알고 있는 것에서 비롯된 가상의 개념
      • 실제 동작과는 다르게 이해하기 쉽도록 자바스크립트 엔진이 식별자들을 최상단으로 끌어올려놓은 다음 실제 코드를 실행한다 고 간주한다.
        • 변수의 선언부를 상단으로 끌어올리고 할당은 원래자리에 남겨둔다. 단, 함수는 전체(할당까지) 다 끌어올린다.

0개의 댓글