질문 12 · 실전 면접 답변
var·let·const와 TDZ는 어떻게 다른가요?
이렇게 답해 보세요 (핵심 답변)
var는 함수 스코프(또는 전역·모듈 스코프)를 가지며 선언 처리 시점에 undefined로 바로 초기화되는 반면, let과 const는 블록 스코프를 가집니다. let과 const로 선언한 변수는 스코프에 등록되더라도 실제 선언문이 실행되어 초기화되기 전까지 TDZ(일시적 사각지대)에 놓이며, 이 구간에서 접근하면 ReferenceError가 발생합니다. 또한 let은 재할당이 가능하고 const는 재할당이 금지되지만, const에 할당된 객체 내부의 프로퍼티 변경까지 막는 것은 아닙니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- for 반복문에서 let을 쓰면 매 반복마다 새로운 바인딩이 만들어져 비동기 콜백에서도 각 시점의 값을 안전하게 참조합니다.
- 같은 스코프 안에서 var는 중복 선언이 허용되지만 let과 const는 문법 오류로 중복 선언을 막아 실수를 줄여 줍니다.
면접에서 자주 하는 실수
var는 선언 전 접근 시 undefined가 나오지만 let과 const는 TDZ 때문에 ReferenceError가 발생한다는 차이를 명확히 구분해야 합니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 12번을 바탕으로 질문과 답변을 새로 정리했습니다.