mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

javascript

Execution Context.

실행 컨텍스트, Variable Environment, Scope Chain, this 바인딩

코드가 실행될 때마다 Execution Context가 생성되고, 변수 환경, 스코프 체인, this가 그 안에서 결정됩니다.

🧱 Execution Context 종류

  • Global EC: 스크립트 최상위. var → global object, let/const → 선언적 환경.
  • Function EC: 함수 호출마다 생성. 매개변수, 지역 변수, arguments 포함.
  • Eval EC: eval() 코드 (거의 사용 안 함).

🧱 생성 단계

실행 컨텍스트와 렉시컬 환경 스택

  1. Creation Phase
    • Variable Environment: var, 함수 선언 호이스팅
    • Lexical Environment: let, const, 블록 스코프
    • Scope Chain 연결
    • this 바인딩 (strict mode, 호출 방식에 따라 달라짐)
  2. Execution Phase
    • 코드를 한 줄씩 실행

🔗 Scope Chain

  • 현재 Lexical Environment → 바깥 Lexical Environment → … → Global
  • 식별자 조회 시 안쪽부터 바깥으로 탐색

🎯 this 바인딩 (요약)

호출 방식this
일반 함수 호출strict: undefined, non-strict: global
메서드 호출호출 객체
new새로 만든 인스턴스
call/apply/bind명시적으로 지정
화살표 함수렉시컬 this (바깥 EC의 this)

🔗 참고 자료