웹/[TIL] JavaScript

[JavaScript] TIL 실행 컨텍스트

Hee_Jo 2025. 5. 20. 19:42

 

실행 컨텍스트

  • 소스코드를 실행하기 위해 필요한 환경을 제공하고 실행 결과를 실제로 관리하는 영역 
  • 모든 코드는 실행 컨텍스트를 통해 실행되고 관리된다

 

 

실행 컨텍스트의 소스코드 4가지

 

전역코드 -> 전역 실행 컨텍스트

  • 전역에 존재하는 소스코드, 전역에 정의 된 함수, 클래스 등 내부코드는 포함되지 않음
  • 전역 코드는 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성해야함

함수코드 -> 함수 실행 컨텍스트 

  • 함수 내부에 존재하는 소스코드, 중첩함수, 클래스등 내부코드는 포함되지 않는다
  • 함수 코드는 지역스코프를 생성 지역변수,매개변수,arguments 객체를 관리해야함

eval코드 -> eval 실행 컨텍스트

  • 전역 함수인 eval 함수에 인수로 전달되어 실행되는 코드를 말함
  • eval 코드는 strict mode(엄격모드) 에서 자신만의 독자적인 스코프를 생성 

모듈코드 -> 모듈 실행 컨텍스트

  • 모듈 내부에 존재하는 소스코드, 모듈내부의 함수, 클래스 등 내부 코드는 포함되지 않음
  • 모듈 코드는 모듈별로 독립적인 모듈 스코프를 생성

 

소스코드 평가 와 실행 

  • 자바스크립트 엔진은 -> 소스코드 평과 / 소스코드 실행 과정을 나누어서 처리함 
  • 소스코드 평가 과정에서 실행 컨텍스트 생성 , 변수, 함수 등 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프 (렉시컬환경 레코드) 에 등록
  • 소스코드의 평가(선언문) = 평가결과 / 소스코드의 실행(선언 이외의문) = 실행결과
var x // var를 먼저 실행 실행컨텍스트는 Undefinde 초기화
x = 1 // 소스코드 실행과정에서 할당문 x = 1만 실행됨

// 2개의 과정으로 나누어서 처리됨!

 

var x  는 선언문이라 평가시점에 처리한다 (소스코드의 평가)

x = 1 는 선언 이외의 문이라 실행시점에 처리된다(소스코드의 실행)

 

x변수가 선언된 변수라면 값을 할당하고 할당 결과를 실행 컨텍스트에 등록한다 

소스코드 평가가 끝나면 => 선언문을 제외한 소스코드가 순차적으로 실행되기 시작  즉 " 런타임 " 시작 

 

 

실행컨텍스트 스택

  • 실행 컨텍스트는 스택 자료구조로 관리된다 => 실행컨텍스트 스택이라고 부르는것 
  • 실행 컨텍스트 스택은 코드의 실행순서를 관리하는것
  • 실행 컨텍스트의 스택의 최상위 존재는 => 실행중인 실행 컨텍스트 
  • 실행 컨텍스트의 스택 최하위 존재는 => 전역 실행 컨텍스트 (항상 맨아래)

 

 

모던자바스크립트 Deep Dive를 보고 공부한것을 정리