1.7 KiB
1.7 KiB
🛠️ CombatSystem: ReferenceError ReSolution Guide
1. Context (배경)
전투 시스템(CombatSystem.ts) 리팩토링 중, 런타임에서 엔진이 중단되는 치명적인 참조 오류가 발생하였습니다. 본 문서는 해당 오류의 원인과 해결 방법, 그리고 향후 유사 사례 방지를 위한 가이드라인을 기록합니다.
2. Issue Breakdown (오류 분석)
- Error Type:
ReferenceError: damage is not defined - Location:
CombatSystem.ts(Collision Detection Loop) - Root Cause: 블록 스코프(
if/else) 내부에서damage변수를 사용하기 전에let혹은const를 통한 명시적 선언이 누락됨. 자바스크립트의 비엄격 모드 혹은 리팩토링 과정에서의 선언부 유실이 원인이었습니다.
3. Resolution (해결 방법)
탄환의 공격력을 계산하기 전, 명시적으로 스코프 내에 변수를 선언하도록 수정하였습니다.
// Fix [[Logic|Logic]]
let damage = bullet.dmg; // 명시적 선언 및 초기화
if (isCritical) {
damage *= criticalMultiplier;
}
4. Prevention Policy (재발 방지 대책)
- Strict Declaration: 모든 변수는 반드시
const또는let을 사용하여 선언하며, 선언되지 않은 변수의 암묵적 전역화(Implicit Global)를 철저히 금지한다. - Linter Integration:
no-undef규칙을 강화하여 빌드 타임에서 미선언 변수 참조를 사전에 차단한다. - Unit Test: 충돌 판정 로직에 대한 단위 테스트를 수행하여 데미지 계산 루프의 무결성을 검증한다.
Related Cluster: Runtime Pipeline Last Updated: 2026-04-23