[JavaScript] 실행 컨텍스트(Execution Context)

JIIJIIJ·2024년 1월 13일
0

JavaScript

목록 보기
17/23
post-thumbnail

실행 컨텍스트 (Execution Context)

실행 컨텍스르란 JavaScript 코드가 평가되고 실행되는 환경을 말한다. 이러한 실행 컨텍스트에 대해 왜 알아야 할까?
예를 들어 코드 동작의 원리, 스코프와 클로저, 비동기 처리, 호이스팅 등 JavaScript를 더 깊이 이해하는데 중요하기 때문이다.

실행 컨텍스트의 생성 과정

  1. JavaScript 코드가 실행되면, 해당 코드를 포함하고 있는 실행 컨텍스트가 생성된다. 이는 전역 코드의 실행 혹은 함수 호출 시 발생한다.
  2. 생성된 실행 컨텍스트는 콜 스택에 푸시 (push)된다. 콜 스택의 가장 위에 위치한 실행 컨텍스트가 현재 실행 중인 컨텍스트이다.
  3. 이후, 해당 실행 컨텍스트 내에서 코드가 순차적으로 실행된다.

실행 컨텍스트의 구성 요소

실행 컨텍스트는 크게 세 부분으로 구성된다.

- 변수 환경 (Variable Environment)

var 키워드로 선언된 변수와 함수 선언식에 대한 정보를 담는다. 이 정보는 시간이 지나도 변하지 않는다.

- 렉시컬 환경 (Lexical Environment)

let, const 키워드로 선언된 변수와 함수 표현식에 대한 정보를 담는다. 이 정보는 시간이 지나며 변경 될 수 있다. 또한, 외부 환경에 대한 참조도 포함하고 있어, 이를 통해 스코프 체인을 형성한다.
렉시컬 환경은 '환경 레코드'(Environment Record)와 '외부 환경 참조 (Outer Environment Reference)' 두 부분으로 나뉜다.

  • 환경 레코드 (Environment Record)
    현대 컨텍스트 내에서 선언된 모든 식별자 (변수, 함수 등)의 정보를 기록한다.
  • 외부 환경 참조 (Outer Environment Reference)
    현대 컨텍스트 외부에 위치한 환경(상위 스코프)에 대한 참조를 저장한다. 이를 통해 스코프 체인을 형성하고, 식별자를 찾아 나갈 수 있다.

- This 바인딩

함수 호출식에 따라 this의 값이 결정된다. 이는 실행 컨텍스트가 생성될 때 함께 결정되며, 일반 함수에서는 전역 객체를 가리키고, 메서드, 이벤트 핸들러, 생성자 함수에서는 각각 해당 메서드를 소유한 객체, 이벤트 핸들러를 등록한 객체, 생성자 함수에 의해 생성된 인스턴스를 가리킨다.

마무리

실행 컨텍스트에 대해 간단하게 정리해보았다.
앞서 말했듯이 실행 컨텍스트는 JavaScript에서 중요한 개념이므로 반드시 숙지하고 있어야 한다.

ps... 아래는 제가 정리한 호이스팅, 콜 스택과 이벤트 루프, 클로저에 대한 글입니다. 실행 컨텍스트와 연관된 부분이 있으니 함께 읽어보시면 좋을 것 같습니다.
: )
Closure
호이스팅

profile
다크모드가 보기 좋아요

0개의 댓글