728x90
TDZ (Temporal Dead Zone) 개념 정리
배경
JavaScript에서 let과 const는 var와 다르게
선언 이전에 접근할 경우 에러가 발생한다.
이 동작의 핵심 원인이 TDZ(Temporal Dead Zone) 이다.
핵심 질문
- TDZ란 무엇인가?
- 왜
let/const는 선언 전에 접근하면 에러가 나는가? - TDZ는 어떤 문제를 방지하기 위해 존재하는가?
논의 요약
TDZ의 정의
TDZ(Temporal Dead Zone) 는let 또는 const로 선언된 변수가
스코프에는 이미 존재하지만, 선언문이 실행되기 전까지 접근이 금지되는 구간
을 의미한다.
- 선언은 호이스팅됨
- 초기화는 선언 시점까지 지연됨
- 이 “지연 구간”이 TDZ
JavaScript 실행 흐름 관점
- 실행 컨텍스트 생성
- 스코프 결정
- 변수 선언 등록 (호이스팅)
- 코드 실행
- 선언문 도달 시 초기화 수행
- 이 시점에서 TDZ 종료
var와의 차이
var- 선언 + 초기화(
undefined)가 동시에 처리 - TDZ 없음
- 선언 전 접근 가능 (
undefined)
- 선언 + 초기화(
let/const- 선언만 먼저 처리
- 초기화 전 접근 차단 (TDZ 존재)
- 선언 전 접근 시
ReferenceError
const의 특징
const는 선언과 동시에 초기화가 필수- TDZ를 벗어나는 순간 반드시 값이 할당되어야 함
- 초기화 누락 시 문법 오류 발생
TDZ의 설계 의도
TDZ는 JavaScript의 안정성과 명확성을 높이기 위한 의도적 제약이다.
- 선언 이전 변수 사용 방지
- 코드 실행 순서에 의존하는 버그 제거
- 가독성과 유지보수성 향상
- 오류를 런타임 초기가 아닌 즉시 노출
결정 사항
let/const도 호이스팅은 된다- 단, TDZ로 인해 선언 전 접근이 금지된다
- “
let은 호이스팅되지 않는다”는 표현은 부정확하다
728x90
'JS' 카테고리의 다른 글
| Node.js 에서 멀티코어를 활용하자 - 3 - 기본 Cluster (0) | 2026.02.02 |
|---|---|
| Node.js 에서 멀티코어를 활용하자 - 실무에서 쓰자 개념 (0) | 2026.02.02 |
| Node.js 에서 멀티코어를 활용하자 - 개념 (0) | 2026.02.02 |
| npm 호이스팅과 js 호이스팅 (1) | 2026.01.19 |
| npm VS pnpm (0) | 2026.01.19 |