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>
This commit is contained in:
Antigravity Agent
2026-07-11 21:03:00 +09:00
parent 468322768c
commit 2cc6eff2dd
162 changed files with 15836 additions and 14 deletions
@@ -0,0 +1,131 @@
---
id: 실행-컨텍스트(execution-context)
title: "실행 컨텍스트(Execution Context)"
category: "Frontend"
status: "draft"
verification_status: "conceptual"
canonical_id: ""
aliases:
- "Execution Context"
- "실행 컨텍스트"
- "JS Execution Context"
- "자바스크립트 실행 환경"
duplicate_of: ""
source_trust_level: "A"
confidence_score: 0.95
created_at: 2026-07-11
updated_at: 2026-07-11
review_reason: ""
merge_history: []
tags: ["research", "context 이해 규칙"]
raw_sources:
- "[S1] Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리"
- "[S2] JavaScript Execution Context How JS Works Behind the Scenes - freeCodeCamp"
applied_in: []
github_commit: ""
---
# [[실행 컨텍스트(Execution Context)]]
## 🎯 한 줄 통찰 (One-line insight)
자바스크립트 코드가 평가되고 실행되는 환경으로, 변수, 스코프, 호이스팅 및 `this` 바인딩 등 코드 실행에 필요한 모든 상태와 정보를 담고 있는 핵심 객체이다.
## 🧠 핵심 개념 (Core concepts)
- **콜 스택(Call Stack)**: 생성된 실행 컨텍스트들을 순차적으로 쌓아 올리고 제거(Push/Pop)하여 코드의 실행 순서와 흐름을 보장하는 스택 구조.
- **Variable & Lexical Environment**: 컨텍스트 내의 식별자 정보를 저장하는 `environmentRecord`와 상위 스코프를 참조하는 `outerEnvironmentReference`로 구성된 환경 객체.
- **생성 및 실행 단계(Creation & Execution Phase)**: 코드 실행 전 메모리를 할당하고 스코프 체인을 설정하는 '생성 단계(호이스팅 수행)'와 이후 한 줄씩 코드를 평가하며 실제 동작을 수행하는 '실행 단계'.
- **this 바인딩**: 함수의 선언 위치가 아닌, 함수가 어떻게 호출되느냐(일반 호출, 메서드 호출 등)에 따라 동적으로 객체를 연결하는 과정.
## 🧩 추출된 패턴 (Extracted patterns)
- **스택 기반 실행 제어(Stack-based Execution Control)**: 전역 컨텍스트가 먼저 콜 스택에 푸시되고, 함수가 호출될 때마다 새로운 함수 실행 컨텍스트가 최상단에 푸시되며 종료 시 팝(Pop)되는 후입선출(LIFO) 패턴.
- **스코프 체이닝(Scope Chaining)**: 특정 변수를 찾을 때 현재의 `Lexical Environment`를 먼저 검색하고, 없으면 `outerEnvironmentReference`를 통해 상위 스코프로 거슬러 올라가며 탐색하는 패턴.
## 📖 세부 내용 (Details)
- **실행 컨텍스트의 정의 및 종류**
실행 컨텍스트는 자바스크립트 엔진이 스크립트를 스캔한 후, 코드를 변환하고 실행하는 과정을 관리하는 전반적인 환경이다 [S1, S2]. 이 환경은 실행할 코드에 전달할 모든 정보를 담고 있는 객체로, 스크립트 실행 시 최초로 생성되는 **전역 실행 컨텍스트(Global Execution Context)**와 함수가 호출될 때마다 생성되는 **함수 실행 컨텍스트(Function Execution Context)**로 나뉜다 [S1, S2].
- **실행 컨텍스트의 처리 단계**
실행 컨텍스트는 두 가지 주요 단계를 거쳐 처리된다.
1. **생성 단계(Creation phase)**: 자바스크립트 엔진이 환경을 구성하는 단계로, 변수와 함수에 대한 메모리를 할당하고 스코프 체인을 설정한다 [S2]. 이 단계에서 현재 컨텍스트와 관련된 모든 식별자 정보가 `environmentRecord`에 수집되며, 이러한 작동 방식이 바로 **호이스팅(Hoisting)**이다 [S1].
2. **실행 단계(Execution phase)**: 엔진이 코드를 위에서 아래로 한 줄씩 읽어내려가며 실행한다 [S2]. 변수에 실제 값을 할당하고 함수 호출 및 표현식 평가를 수행한다 [S2].
- **실행 컨텍스트의 내부 구조**
실행 컨텍스트 내부는 주로 `Variable Environment``Lexical Environment`로 구성된다 [S1].
- `Variable Environment`: 최초 생성 시점의 스냅샷 상태를 유지하며 참조를 제공한다 [S1].
- `Lexical Environment`: `Variable Environment`의 정보를 복사하여 생성되지만, 코드 실행 중 발생하는 블록 내 변수 할당 등 런타임의 동적인 변화를 실시간으로 반영한다 [S1].
두 환경 모두 식별자 정보를 담는 `environmentRecord`와 상위 스코프(부모 스코프)를 참조하여 스코프 체이닝을 가능하게 하는 `outerEnvironmentReference`를 포함한다 [S1].
- **콜 스택(Call Stack)의 역할**
자바스크립트 엔진은 생성된 전역 및 함수 컨텍스트들을 추적하고 순서를 보장하기 위해 콜 스택(Call Stack)이라는 자료구조를 사용한다 [S1, S2]. 콜 스택은 고정된 크기를 가지며, 종료 조건이 없는 재귀 함수 호출 등으로 인해 허용된 컨텍스트 제한을 초과하면 스택 오버플로우(Stack Overflow) 에러가 발생한다 [S2].
- **this 바인딩**
`this` 바인딩은 렉시컬 스코프(Lexical Scope)처럼 함수가 정의된 위치에 따라 결정되는 것이 아니라, 함수가 **어디서 어떻게 호출되느냐**에 따라 전역 객체, 메서드를 호출한 객체, 새로 생성된 인스턴스 등으로 동적으로 바인딩된다 [S1].
## ⚖️ 모순 및 업데이트 (Contradictions & updates)
소스에서 상충되는 정보나 기존 상식과 다른 내용은 확인되지 않음.
## 🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다. (소스 내에 파일 경로, 커밋 해시, 프로젝트 아키텍처에 적용된 구체적 실무 사례는 명시되어 있지 않음.)
## 💻 코드 패턴 (Code patterns)
자바스크립트(ES6)에서 함수 호출을 통한 실행 컨텍스트의 렉시컬 스코프 탐색(`outerEnvironmentReference`)을 보여주는 구조 예시.
```javascript
// 상위 스코프(전역)
let greeting = 'Hello';
function petInfo() {
// 내부 Lexical Environment
let cat = 'cat';
let dog = 'dog';
// cat과 dog는 현재 컨텍스트의 environmentRecord에서 찾음
// greeting은 outerEnvironmentReference를 통해 전역 스코프에서 찾음
console.log(greeting, cat, dog);
}
petInfo(); // 새로운 함수 실행 컨텍스트 생성 후 콜 스택에 push
```
## ✅ 검증 상태 및 신뢰도
- **상태:** draft
- **검증 단계:** conceptual
- **출처 신뢰도:** A
- **신뢰 점수:** 0.95
- **중복 검사 결과:** 신규 생성 (New discovery)
## 🔗 관련 문서 링크 (Related document links)
### 상위/유사 개념
- [[콜 스택(Call Stack)]] — 실행 컨텍스트를 저장하고 LIFO 방식으로 코드 실행 순서를 제어하는 구조
- [[스코프(Scope)]] — 실행 컨텍스트의 `outerEnvironmentReference`에 의해 탐색 가능해지는 식별자의 유효 범위
- [[호이스팅(Hoisting)]] — 컨텍스트 생성 단계에서 `environmentRecord`에 식별자를 미리 수집하는 동작
- [[클로저(Closure)]] — 외부 실행 컨텍스트가 종료되었음에도 `Lexical Environment`가 유지되어 내부 함수가 상위 환경을 참조하는 현상
### 심층 후속 질문 (Deeper Research Questions)
- Lexical Environment와 Variable Environment는 V8 등 실제 자바스크립트 엔진 메모리 상에서 어떻게 다르게 관리되는가?
- 비동기 콜백 함수나 프로미스(Promise)는 콜 스택 및 실행 컨텍스트의 제어권과 어떻게 상호작용하는가?
- 블록 스코프(`let`, `const`)와 함수 스코프(`var`)는 Lexical Environment의 런타임 업데이트 과정에서 구체적으로 어떻게 다르게 취급되는가?
- 실행 컨텍스트 스택 사이즈가 초과(Stack Overflow)되는 것을 방지하기 위해 꼬리 재귀 최적화(Tail Call Optimization)는 실행 컨텍스트를 어떻게 조작하는가?
- 화살표 함수(Arrow Function)가 고유의 `this` 실행 컨텍스트를 생성하지 않고 상위 환경을 상속받는 내부 엔진의 처리 로직은 무엇인가?
### 실무 적용 맥락 (Practical Application Contexts)
- **Implementation:** 비동기 콜백이나 내부 함수에서 의도치 않게 전역 객체로 `this`가 바인딩되는 오류 디버깅 및 회피.
- **System Design:** 이벤트 루프 및 비동기 I/O 아키텍처에서 콜 스택의 점유 시간을 최소화하는 비차단(Non-blocking) 로직 설계.
- **Operation / Maintenance:** 가비지 컬렉터(Garbage Collector)와 연동된 렉시컬 스코프 메모리 해제를 통한 애플리케이션 메모리 누수(Memory Leak) 방지.
- **Learning Path:** 자바스크립트 동작 원리 이해 -> 스코프 및 호이스팅 원리 파악 -> 클로저 및 비동기(Promise) 프로그래밍 마스터.
### 인접 주변 주제 (Adjacent Topics)
- [[이벤트 루프(Event Loop)]] — 확장 방향: 콜 스택이 비워졌을 때 태스크 큐의 함수 실행 컨텍스트를 생성하여 스택으로 푸시하는 동시성 모델.
- [[가비지 컬렉션(Garbage Collection)]] — 확장 방향: 실행 컨텍스트가 종료된 후 `Lexical Environment`의 참조 여부에 따른 메모리 해제 메커니즘.
## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[context 이해 규칙]]
- **관련 개념:** [[콜 스택]], [[스코프]], [[클로저]]
- **참조 맥락:** 자바스크립트의 변수 참조 범위, 비동기 함수의 실행 순서, `this` 바인딩 오류 등 코드 동작 원리를 깊이 이해하고 디버깅할 때 참조.
## 📚 출처 (Sources)
- [S1] Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리
- [S2] JavaScript Execution Context How JS Works Behind the Scenes - freeCodeCamp
## 📝 변경 이력 (Change history)
- 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine.