var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화한다.
let과 const는 호이스팅 변수를 초기화하지 않는다.
let과 const의 경우 호이스팅된 선언부와 초기화 및 할당 시점 사이에 TDZ(시간상 사각지대)가 생긴다.
console.log(name) // Temporal Dead Zone
const name = "mike" // 함수 선언 및 할당
console.log(name) // 사용 가능
할당하기 전에는 사용할 수 없음
→ 코드를 예측 가능하게 하고, 잠재적인 버그를 줄일 수 있다.
TDZ 영향을 받지 않는 구문 - var, function, import