Language | Basic/JavaScript

[JavaScript 스터디] 실행 컨텍스트

주정용 2021. 2. 1. 14:40
728x90
  • 자바스크립트의 모든 코드를 관리하는 실체
  • Lexical EnvironmentVariable Environment로 이뤄짐

소스코드 타입

  • 전역 코드 : 전역에 존재하는 소스코드. 함수/클래스의 내부 코드는 포함X
    • 전역 스코프 생성
    • 전역 객체와 연결
    • 코드 평가 후 전역 실행 컨텍스트 생성
  • 함수 코드 : 함수 내부에 존재하는 소스코드
    • 지역 스코프 생성
    • 전역 스코프에 스코프 체인
    • 코드 평가 후 함수 실행 컨텍스트 생성
  • eval 코드 : eval의 인수로 전달되는 소스코드
    • Strict mode에서 자신만의 독자적인 스코프 생성
    • 코드 평가 후 eval 실행 컨텍스트 생성
  • 모듈 코드 : 모듈 내부에 존재하는 소스코드
    • 모듈별 모듈 스코프 생성
    • 코드 평가 후 모듈 실행 컨텍스트 생성

소스코드의 평가와 실행

  • 자바스크립트 엔진은 소스코드를 평가-실행 과정으로 나누어서 처리함
    • 평가 : 변수/함수 식별자를 실행 컨텍스트의 렉시컬 환경의 환경 레코드에 등록
    • 실행 : 런타임. 필요한 정보를 실행 컨텍스트에서 검색해서 사용

실행 컨텍스트의 역할

  • 식별자를 등록하고 관리하는 스코프, 코드 실행 순서를 관리하는 내부 메커니즘
  • 모든 코드는 실행 컨텍스트를 통해서 실행되고 관리됨
  • 식별자, 스코프 --> 렉시컬 환경에서 관리
  • 코드 실행 순서 --> 실행 컨텍스트 스택으로 관리

실행 컨텍스트 스택

  • 실행 컨텍스트 스택의 top에는 항상 현재 실행중인 코드의 실행 컨텍스트가 있음
  • top === 실행중인 실행 컨텍스트

렉시컬 환경

  • 실행 컨텍스트의 컴포넌트
  • 키, 값 구조의 객체 형태로 스코프를 생성하여 식별자를 키로 등록하고 식별자에 바인딩된 값 관리
  • 렉시컬 스코프의 실체
  • 환경 레코드와 외부 렉시컬 환경에 대한 참조로 이뤄짐
    • 환경 레코드 : 스코프에 포함된 식별자와 값을 관리
      • 객체 환경 레코드 : var 변수, 전역 함수, 빌트인 객체 등
      • 선언적 환경 레코드 : let, const 변수 등
    • 외부 렉시컬 환경에 대한 참조 : 상위 코드의 렉시컬 환경

학습 도서

  • '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&linkClass=3314&barcode=9791158392239

'Language | Basic > JavaScript' 카테고리의 다른 글

[JavaScript 스터디] 클래스  (0) 2021.02.01
[JavaScript 스터디] 클로저  (0) 2021.02.01
[JavaScript 스터디] this  (0) 2021.02.01
[JavaScript 스터디] 빌트인 객체  (0) 2021.01.31
[JavaScript 스터디] strict mode  (0) 2021.01.30