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,117 @@
---
id: execution-context
title: "Execution Context"
category: "Frontend"
status: "draft"
verification_status: "conceptual"
canonical_id: ""
aliases: ["실행 컨텍스트", "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: ["Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리", "JavaScript Execution Context How JS Works Behind the Scenes - freeCodeCamp"]
applied_in: []
github_commit: ""
---
# [[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)
```javascript
// 자바스크립트 실행 컨텍스트와 호이스팅 및 스코프 체인을 보여주는 예시
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)
## 🔗 관련 문서 링크 (Related document links)
### 상위/유사 개념
- [[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)
- **상위/루트:** [[context 이해 규칙]]
- **관련 개념:** [[Call Stack]], [[Lexical Environment]], [[Hoisting]]
- **참조 맥락:** 프론트엔드 자바스크립트 환경에서 비동기 코드, 스코프, 클로저 관련 디버깅 및 설계 원칙을 수립할 때 참조됨.
## 📚 출처 (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.