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,119 @@
---
id: scope
title: "Scope"
category: "Frontend"
status: "draft"
verification_status: "conceptual"
canonical_id: ""
aliases: ["스코프", "유효범위", "Lexical Scope", "어휘적 스코프", "스코프 체인", "Scope Chain"]
duplicate_of: ""
source_trust_level: "A"
confidence_score: 0.90
created_at: 2026-07-11
updated_at: 2026-07-11
review_reason: ""
merge_history: []
tags: ["research", "context 이해 규칙", "javascript", "execution-context"]
raw_sources: ["Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리"]
applied_in: []
github_commit: ""
---
# [[Scope]]
## 🎯 한 줄 통찰 (One-line insight)
스코프(Scope)는 변수와 함수가 선언된 위치에 따라 접근할 수 있는 유효 범위를 결정하며, 자바스크립트의 실행 컨텍스트 내에서 Lexical Environment를 통해 동적 및 정적으로 관리되는 식별자 참조 체계이다.
## 🧠 핵심 개념 (Core concepts)
- **Lexical Environment (어휘적 환경)**: 실행 중에 발생하는 코드 내 변화를 실시간으로 반영하며, 현재 환경의 식별자 정보를 저장하는 `environmentRecord`와 외부 환경을 가리키는 `outerEnvironmentReference`로 구성된다.
- **Scope Chain (스코프 체인)**: 현재 컨텍스트의 Lexical Environment에서 변수를 찾지 못할 경우, `outerEnvironmentReference`를 통해 상위 스코프를 탐색하여 전역 컨텍스트까지 추적해 나가는 논리적 검색 메커니즘.
- **Lexical Scope (어휘적 스코프)**: 함수가 어떻게 호출되는지가 아니라, 함수가 '정의된 위치(선언 위치)'에 따라 고정되어 결정되는 스코프.
## 🧩 추출된 패턴 (Extracted patterns)
- **식별자 검색 패턴 (Identifier Resolution Pattern)**: 변수 검색 요청 발생 ➔ 현재 컨텍스트의 Lexical Environment(`environmentRecord`) 검색 ➔ 실패 시 `outerEnvironmentReference`를 통한 상위 스코프 추적 ➔ 전역 스코프 도달 ➔ 실패 시 `undefined` 반환 또는 `ReferenceError` 발생.
## ⚖️ 비교 및 선택 기준 (Comparison & decision criteria)
| 항목 (Option) | 장점 | 단점 | 언제 선택 |
|---|---|---|---|
| Lexical Scope | 함수 선언 위치에 따라 결정되므로 코드의 흐름과 변수 참조 범위를 정적으로 예측하고 파악하기 쉬움 | 런타임의 동적 호출 맥락(누가 호출했는가)을 반영하지 않음 | 식별자(변수, 함수 등)의 유효 범위를 결정하고 스코프 체인을 통해 참조 관계를 구성할 때 적용 |
| This 바인딩 | 함수가 어떻게 호출되느냐에 따라 동적으로 가리키는 객체가 변하므로 유연한 객체 지향 및 메서드 재사용이 가능 | 호출 방식(일반, 메서드, new, 명시적 바인딩)에 따라 값이 달라져 디버깅 시 값 추적이 까다로울 수 있음 | 객체의 상태를 조작하거나 메서드, 생성자 함수 등 실행 컨텍스트의 주체 객체를 식별해야 하는 경우 |
## 📖 세부 내용 (Details)
- 사용자가 웹페이지에 처음 접근하면 자바스크립트 엔진이 코드를 스캔하여 변환 및 실행을 관리하는 **실행 컨텍스트(Execution Context)** 환경을 생성하며, 이는 스코프(Scope), 호이스팅, 클로저, `this` 등의 핵심 동작 원리를 포함한다 [S1].
- 스코프의 실체적 구조는 실행 컨텍스트를 구성하는 **Lexical Environment**에 기반한다. Lexical Environment는 동적인 활동을 실시간으로 반영하며 두 가지 하위 구조로 이루어진다 [S1].
- `environmentRecord`: 실행 컨텍스트 내에서 선언된 변수와 함수 선언들의 실제 값을 저장한다 [S1].
- `outerEnvironmentReference`: 현재 컨텍스트가 위치한 코드의 외부 스코프(상위 스코프)에 대한 참조를 유지한다 [S1].
- **스코프 체인(Scope Chain)** 동작 원리: 코드에서 특정 변수를 찾을 때, 자바스크립트 엔진은 우선 현재 컨텍스트의 Lexical Environment를 검색한다 [S1]. 만약 그곳에서 식별자를 찾지 못하면 `outerEnvironmentReference`를 통해 상위 스코프의 Lexical Environment를 검색한다 [S1]. 이 검색은 전역(Global) 컨텍스트의 Lexical Environment에 도달할 때까지 계속되며, 끝내 변수를 찾지 못하면 `undefined``ReferenceError`를 반환하게 된다 [S1].
- **Lexical Scope와 this 바인딩의 차이**: 함수의 Lexical Scope는 그 함수가 정의된 정적인 위치에 따라 상위 스코프가 고정적으로 결정되는 반면, `this` 바인딩은 선언 위치와 무관하게 함수가 '어디서 어떻게 호출되느냐'에 따라 가리키는 대상이 동적으로 달라지는 차이점이 있다 [S1].
## ⚖️ 모순 및 업데이트 (Contradictions & updates)
소스 내에서 상충되는 정보나 모순된 업데이트 내역은 확인되지 않음.
## 🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다. (소스에 구체적인 코드 파일 경로, Git 커밋 해시, 결정 기록 등이 포함되어 있지 않음)
## 💻 코드 패턴 (Code patterns)
```javascript
// 소스 [S1]의 petInfo 예제 구조를 구현한 Lexical Scope 및 스코프 체인 패턴
let greeting = "Hello"; // 상위 스코프 (전역 환경)
function petInfo() {
// petInfo 함수의 LexicalEnvironment(environmentRecord)에 저장되는 변수들
let cat = "Meow";
let dog = "Woof";
// 현재 스코프에 없으므로 outerEnvironmentReference를 통해 상위 스코프를 탐색하여 접근
console.log(greeting);
console.log(cat, dog);
}
petInfo();
// 함수 외부(전역 스코프)에서 내부 스코프의 변수에 접근을 시도할 경우,
// 해당 스코프의 LexicalEnvironment에 존재하지 않으므로 ReferenceError를 반환함
// console.log(cat);
```
## ✅ 검증 상태 및 신뢰도
- **상태:** draft
- **검증 단계:** conceptual
- **출처 신뢰도:** A
- **신뢰 점수:** 0.90
- **중복 검사 결과:** 신규 생성 (New discovery)
## 🔗 관련 문서 링크 (Related document links)
### 상위/유사 개념
- [[Execution Context]] — 스코프를 구성하고 코드가 실행되는 환경적 기반을 제공함
- [[Lexical Environment]] — 스코프의 실체로서 식별자 정보와 상위 스코프 참조를 물리적으로 보존함
- [[This Binding]] — 스코프(정적 위치)와 대비되어 실행 시점에 동적으로 객체를 참조하는 메커니즘
- [[Closure]] — 함수가 종료된 후에도 `outerEnvironmentReference`를 통해 상위 스코프의 상태를 유지하는 파생 개념
### 심층 후속 질문 (Deeper Research Questions)
- Lexical Environment의 `environmentRecord``outerEnvironmentReference`는 실행 컨텍스트 생성 시점과 실행 시점에 각각 어떻게 변화하는가?
- 스코프 체인이 깊어질 경우 발생하는 변수 참조 성능 저하를 자바스크립트 엔진은 어떻게 최적화하는가?
- 전역 스코프(Window/Global)와 블록 스코프(Block Scope)는 Lexical Environment에서 물리적으로 어떻게 다르게 할당 및 취급되는가?
- 클로저(Closure) 현상이 일어날 때 가비지 컬렉터(Garbage Collector)는 스코프 체인을 어떤 기준으로 추적하여 메모리를 관리하는가?
- `strict mode`의 적용은 스코프 체인 탐색 규칙 및 암묵적 전역 변수 선언 동작에 어떠한 영향을 미치는가?
### 실무 적용 맥락 (Practical Application Contexts)
- **Implementation:** 변수명 충돌 방지를 위한 블록 스코프 도입 및 상태 캡슐화 로직 구현.
- **System Design:** 모듈 패턴 및 클로저를 활용한 컴포넌트 정보 은닉 및 독립적 환경 아키텍처 설계.
- **Operation / Maintenance:** `ReferenceError` 발생 시 스코프 누수 및 잘못된 상위 스코프 참조로 인한 런타임 버그 추적 및 트러블슈팅.
- **Learning Path:** Execution Context의 탄생부터 Lexical Environment, Scope Chain, 그리고 Closure로 이어지는 자바스크립트 코어 동작 원리 학습.
### 인접 주변 주제 (Adjacent Topics)
- [[Hoisting]] — 스코프 내에서 `environmentRecord`가 식별자를 실행 전에 수집하는 과정으로 파생됨.
- [[Call Stack]] — 실행 컨텍스트들이 콜 스택에 푸시되고 팝오프되며 스코프의 생명주기를 통제함.
## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[context 이해 규칙]]
- **관련 개념:** [[Lexical Environment]], [[Scope Chain]]
- **참조 맥락:** 자바스크립트 애플리케이션의 메모리 누수를 방지하고 예측 가능한 변수 참조 범위를 설계 및 디버깅할 때 주요 규칙으로 참조된다.
## 📚 출처 (Sources)
- [1] Execution Context 실행 컨텍스트를 알아야하는 이유? - 넥스트리 (https://www.nextree.io/execution-context/)
## 📝 변경 이력 (Change history)
- 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine.