• Execution Context
    • 코드가 실행되는 환경을 말함
    • 어떤 변수, 함수에 접근 가능한지를 결정
  • elements
    • code evaluation state
    • Realm
      • Intrinsics
      • Global Object
      • Global Environment Record
    • LexicalEnvironment
      • Global Environment Record
    • VariableEnvironment
      • Global Environment Record
    • PrivateEnvironment
    • ScriptOrModule
    • Function
    • Generator
  • phase
    • creation
    • execution
  • 주요 구성 요소
    • Variable Environment
    • Lexical Environment
      • Scope Chain 관리
      • Activation Object
        • 특정 스코프의 변수와 함수 선언을 저장하는 객체
        • 구성 요소
          • Environment record
            • 내부 지역 변수, 참조
          • Outer Lexical Environment Reference
            • 전역 환경, 부모 스코프의 lexical environment 를 참조
            • Closures의 원리
    • This Binding
      • 이때 this가 참조하는 값이 결정됨
  • 종류
    • Global Context
      • 전체 코드 실행 시 생성
      • browser - window
      • node - global
    • Function Context
      • 함수 호출마다 생성
    • Eval Context
      • eval() 실행 시 생성
  • 실행 과정
    • 컨텍스트 생성 - 변수/함수 선언을 메모리에 올림 (호이스팅)
    • 컨텍스트 실행 - 코드 실행 - 함수 호출 시 새로운 컨텍스트가 스택에 push됨