Files
2nd/10_Wiki/Topics/Domain_Programming/From_RawData/Execution Context.md
T
Antigravity Agent 2cc6eff2dd Organizer 정리 산출물(From_RawData) + 이사 체크리스트 + 인덱스 갱신
- Raw_Data 자동 정리 산출물이 각 도메인 From_RawData/ 로 편입, 00_INDEX 연결 갱신
- 컴퓨터_이사_체크리스트.md 추가 (두뇌-상대 경로 규약 v2.2.304 — 새 컴퓨터에서
  바꿀 절대 경로는 localBrainPath 1개)
- Astra 세션 산출물(에피소드 기억·기능 인벤토리) 갱신

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:03:00 +09:00

9.1 KiB
Raw Blame History

id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
id title category status verification_status canonical_id aliases duplicate_of source_trust_level confidence_score created_at updated_at review_reason merge_history tags raw_sources applied_in github_commit
execution-context Execution Context Frontend draft conceptual
실행 컨텍스트
JS Execution Context
자바스크립트 실행 컨텍스트
A 0.95 2026-07-11 2026-07-11
research
context 이해 규칙
Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리
JavaScript Execution Context How JS Works Behind the Scenes - freeCodeCamp

Execution Context

🎯 한 줄 통찰 (One-line insight)

실행 컨텍스트(Execution Context)는 자바스크립트 엔진이 코드를 평가하고 실행하기 위해 필요한 모든 식별자, 스코프, 환경 정보를 담고 관리하는 핵심 구동 환경이다.

🧠 핵심 개념 (Core concepts)

  • 생성 단계(Creation Phase)와 실행 단계(Execution Phase): 코드를 실행하기 전 메모리를 할당하고 스코프 체인을 설정하는 단계와, 실제로 코드를 위에서부터 아래로 읽으며 값을 할당하고 실행하는 단계로 나뉜다.
  • 전역 및 함수 실행 컨텍스트: 스크립트가 처음 실행될 때 생성되는 전역 실행 컨텍스트(Global Execution Context)와 함수가 호출될 때마다 생성되는 함수 실행 컨텍스트(Function Execution Context)가 있다.
  • Variable Environment & Lexical Environment: 실행 컨텍스트 내에서 식별자와 함수 선언을 저장하는 environmentRecord와 상위 스코프를 참조하는 outerEnvironmentReference로 구성되는 환경 정보이다.
  • 콜 스택(Call Stack): 활성화된 모든 실행 컨텍스트의 순서와 흐름을 추적 및 제어하기 위해 자바스크립트 엔진이 사용하는 자료 구조이다.

🧩 추출된 패턴 (Extracted patterns)

  • 호이스팅(Hoisting) 패턴: 함수 내 코드가 실행되기 전(생성 단계)에 현재 컨텍스트에 관련된 모든 식별자 정보(변수명, 함수 선언 등)를 수집하여 메모리에 먼저 저장함으로써, 선언 이전에 접근 시 오류 대신 undefined나 함수 자체를 반환하게 되는 메커니즘.
  • 스코프 체인(Scope Chain) 탐색 패턴: 현재 컨텍스트의 Lexical Environment에서 변수를 찾지 못하면 outerEnvironmentReference를 통해 상위 스코프의 Lexical Environment를 재귀적으로 탐색하여 변수를 찾는 구조적 패턴.

📖 세부 내용 (Details)

  • 자바스크립트 엔진의 코드 실행 준비: 자바스크립트는 싱글 스레드 인터프리터 언어이며, 엔진이 스크립트 파일을 스캔한 뒤 코드 변환과 실행을 관리하기 위해 '실행 컨텍스트'라는 환경을 생성한다 [S1], [S2].
  • 컨텍스트의 두 가지 생애 주기:
    • 생성 단계(Creation Phase): 브라우저의 window나 Node.js의 global 같은 전역 객체를 생성하고, 변수와 함수를 위한 메모리를 설정한다 [S1], [S2]. 이때 변수는 기본적으로 undefined로 초기화된다 [S2].
    • 실행 단계(Execution Phase): 코드를 위에서 아래로 한 줄씩 순차적으로 실행하며, 변수에 실제 값을 할당하고 함수 호출을 평가한다 [S2].
  • 실행 컨텍스트의 내부 구조:
    • Variable Environment: 초기화 시점의 상태를 스냅샷으로 유지하며 변수 및 외부 환경에 대한 정보를 포함한다 [S1].
    • Lexical Environment: 변수 할당 등 코드 실행 중에 발생하는 동적인 변화를 실시간으로 반영한다 [S1].
    • 두 환경 모두 식별자 정보를 저장하는 environmentRecord와 상위 스코프를 추적하는 outerEnvironmentReference를 포함한다 [S1].
  • 콜 스택(Call Stack)을 통한 관리: 실행 컨텍스트들은 콜 스택에 푸시(Push)되어 관리된다 [S1], [S2]. 전역 컨텍스트가 가장 먼저 깔리고, 함수가 호출될 때마다 새로운 함수 실행 컨텍스트가 최상단에 쌓인다 [S1], [S2]. 함수 실행이 종료되면 해당 컨텍스트는 팝(Pop)되어 삭제되며, 재귀 함수 등에 의해 콜 스택의 고정된 크기 한도를 초과하면 스택 오버플로우(Stack overflow) 에러가 발생한다 [S2].
  • this 바인딩: 실행 컨텍스트 활성화 시점에 함수가 어떻게 호출되었는지(일반 호출, 메서드 호출, 생성자 호출, 명시적 바인딩)에 따라 this 식별자가 가리키는 객체가 연결된다 [S1].

⚖️ 모순 및 업데이트 (Contradictions & updates)

  • 기본적으로 전역 실행 컨텍스트에서 일반 함수 호출 시 this는 전역 객체를 가리키지만, '엄격 모드(strict mode)'가 활성화된 환경에서는 this 바인딩이 undefined로 설정된다 [S1].

🛠️ 적용 사례 (Applied in summary)

현재 발견된 실제 적용 사례(구체적인 프로젝트 파일 경로나 Git 커밋 해시 등)가 없습니다.

💻 코드 패턴 (Code patterns)

// 자바스크립트 실행 컨텍스트와 호이스팅 및 스코프 체인을 보여주는 예시
let greeting = "Hello"; // 전역 컨텍스트에 기록됨

function petInfo() {
  // petInfo 함수 실행 컨텍스트 생성 (생성 단계 -> 실행 단계)
  let cat = "cat";
  let dog = "dog";
  
  // 자신의 LexicalEnvironment에서 cat, dog를 찾고, 
  // outerEnvironmentReference를 통해 상위(전역) 스코프에서 greeting을 찾음
  console.log(greeting, cat, dog); 
}

petInfo(); // Call Stack에 petInfo 실행 컨텍스트 푸시, 완료 후 팝

(언어: JavaScript, 버전: ES6+ 기준)

검증 상태 및 신뢰도

  • 상태: draft
  • 검증 단계: conceptual
  • 출처 신뢰도: A
  • 신뢰 점수: 0.95
  • 중복 검사 결과: 신규 생성 (New discovery)

상위/유사 개념

  • Call Stack — 실행 컨텍스트의 순서와 생명주기를 물리적으로 관리하는 메모리 구조.
  • Lexical Environment — 실행 컨텍스트 내부에서 식별자와 스코프를 실시간으로 저장/관리하는 핵심 객체.
  • Hoisting — 생성 단계에서 environmentRecord에 식별자가 미리 저장되면서 발생하는 언어적 특징.
  • Scope Chain — outerEnvironmentReference를 통해 상위 컨텍스트의 변수에 접근하는 논리적 탐색 메커니즘.

심층 후속 질문 (Deeper Research Questions)

  • 자바스크립트 엔진의 이벤트 루프(Event Loop)는 콜 스택 및 실행 컨텍스트와 어떻게 상호작용하며 비동기 처리를 수행하는가?
  • Variable Environment와 Lexical Environment는 구체적으로 어떤 기준에 의해 분리되어 동작하는가?
  • 'strict mode' 도입 외에 현대 자바스크립트(ES6+) 모듈 환경에서 전역 실행 컨텍스트의 this 바인딩은 어떻게 달라지는가?
  • 클로저(Closure)는 파괴된 상위 함수 실행 컨텍스트의 Lexical Environment를 어떻게 메모리에 유지시키는가?
  • 운영체제 수준의 'Context Switching'과 자바스크립트의 'Execution Context' 전환은 성능 및 오버헤드 측면에서 어떤 차이가 있는가?

실무 적용 맥락 (Practical Application Contexts)

  • Implementation: 비동기 콜백이나 프로미스 체이닝 작성 시, 스코프와 this 바인딩 유지를 위한 화살표 함수(Arrow Function) 활용.
  • System Design: 전역 변수 오염을 최소화하고 메모리 누수(Memory Leak)를 방지하기 위한 모듈 및 클로저 기반의 상태 관리 설계.
  • Operation / Maintenance: 콜 스택 오버플로우 추적 및 디버깅 시, 브라우저 개발자 도구의 Call Stack 패널을 통한 실행 컨텍스트 계층 분석.
  • Learning Path: 자바스크립트의 비동기 메커니즘, 스코프, 클로저, 호이스팅을 심도 있게 이해하기 위한 필수 선행 개념으로 학습.

인접 주변 주제 (Adjacent Topics)

  • Context Switching (OS) — 자원을 공유하는 OS 관점에서 프로세스/스레드의 상태를 저장하고 복원하는 메커니즘적 비교.
  • Closure — 상위 실행 컨텍스트가 종료되었음에도 해당 환경의 변수에 계속 접근할 수 있게 해주는 기능.
  • Event Loop — 싱글 스레드 환경에서 실행 컨텍스트 처리가 완료된 후 비동기 콜백을 콜 스택으로 푸시하는 메커니즘.

🔗 지식 그래프 (Knowledge Graph)

📚 출처 (Sources)

  • [1] Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리
  • [2] JavaScript Execution Context How JS Works Behind the Scenes - freeCodeCamp

📝 변경 이력 (Change history)

  • 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine.