ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JS Deep Dive 23장. 실행 컨텍스트 (1)
    개발/자바스크립트로의 깊은 잠수 2026. 7. 21. 20:32

    스코프를 관리하는 실행 컨텍스트..

     

    실행 컨텍스트는 참 재밌는 녀석입니다.

    자바스크립트 코드에 우리가 수많은 변수와 함수를 정의해도 꼬이지 않고 빠른 성능을 유지할 수 있는 이유는 무엇일까요? 바로 요 실행 컨텍스트가 그걸 관리해주기 때문입니다.

     

    한번 어떤 기특한 녀석인지 알아봅시다.

     

    소스 코드 평가

    자바스크립트는 인터프리터 언어지만.. 마치 컴파일 언어처럼 먼저 소스 코드 평가라는 것을 합니다.

    ECMAScript 사양에 따르면 이 평가되는 소스 코드에는 4가지 타입이 있다고 합니다.

    타입에 따라 실행 컨텍스트를 생성하는 과정도 달라지고, 내부에서 관리되는 내용도 달라집니다.

    • 전역 코드
    • 함수 코드
    • eval 코드
    • 모듈 코드

     

    그럼 이 소스 코드 평가가 뭐냐.

    실행 컨텍스트를 생성하고 변수, 함수 등의 선언문만 먼저 실행하여 변수, 함수 식별자를 실행 컨텍스트가 관리하는 스코프(렉시컬 환경의 환경 레코드)에 key로 등록하는 과정입니다. 말이 너무 어렵지만 일단 넘어갑시다.

     

    그래도 좀 쉽게 설명해 보자면... 약간 변수나 함수 정의를 찾을 때 어떤 범위(스코프)를 뒤져보는데, 그 스코프가 실행 컨텍스트에 의해 관리되는 것이라고만 이해해도 일단 무방합니다.

     

    그러면 이 코드 평가가 처음부터 모든 코드를 다 평가하냐? 그렇지 않습니다.

    앞서 말한 타입에 맞게 자기 영역만 평가합니다.

    전역 코드 평가에서는 전역에서 평가되어야 하는 코드들만 평가합니다. 쭉 훑어보다가 함수 코드가 나온다? 그럼 평가 안하고 넘어갑니다.

    그럼 함수 코드는 언제 평가되느냐. 런타임에 그 함수가 호출되는 시점에 평가합니다.

     

    이렇게 스코프가 구분되고, 그 스코프가 체인으로 연결되어 상위 스코프를 순차적으로 탐색할 수 있는 것은 실행 컨텍스트가 이것들을 관리해주기 때문이다~ 하고 이해하면 됩니다.

     

    실행 컨텍스트에는 스택과 렉시컬 환경이라는 것이 있습니다.

     

    실행 컨텍스트 스택

    콜스택이라고 부르기도 합니다.

    코드가 평가되면서 실행 컨텍스트가 만들어지는데, 이때 실행 컨텍스트는 스택으로 관리됩니다.

    코드가 실행되는 시간의 흐름에 따라 push pop을 하는 것이 자연스럽기 때문입니다.

     

    렉시컬 환경

    실행 컨텍스트가 실행 순서를 관리한다면, 얘는 스코프와 식별자를 관리하는 환경입니다.

     

    이 녀석들이 어떻게 구성되고 동작하는지는 다음 글 실행 컨텍스트 (2) 에서 알아보도록 하겠습니다.

    댓글

Copyright 2022. ProdYou All rights reserved.