웹/[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를 보고 공부한것을 정리