← 질문 목록
#79깊이 0

let도 끌어올려지는데 왜 바로 읽지 못하는가?

언어 · 런타임기초언어 의미론

let과 const의 바인딩은 스코프 시작 때 만들어지지만 선언문을 평가하기 전에는 초기화되지 않는다. 이 시간적 사각지대에서 읽으면 ReferenceError가 난다.

기준varlet·const
실행 전 상태undefined로 초기화미초기화
선언 전 읽기undefinedReferenceError
블록 경계무시적용

호이스팅은 소스 코드를 실제로 위로 옮기는 동작이 아니다. 실행 컨텍스트를 만들 때 선언을 등록하고 각 종류의 초기화 시점을 달리하는 설명 모델이다.

함수 선언은 본문까지 일찍 바인딩되어 선언 앞에서 호출할 수 있다. 함수 표현식은 담긴 변수의 초기화 규칙을 따르므로 var와 let의 차이가 그대로 드러난다.

시간적 사각지대의 let을 typeof로 확인해도 ReferenceError가 난다. 아예 선언되지 않은 이름에 typeof를 썼을 때 undefined가 나오는 것과 다르다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

let도 끌어올려지는데 왜 바로 읽지 못하는가?