먼저 호이스팅이란 해당 변수 선언문이 자신의 스코프의 가장 선두로 올라가는 현상을 의미하는데 var
는 호이스팅 현상과 함께 undefined로 동시 초기화되어 선언문 이전에 참조가 일어나도 오류가 안나지만 let과 const는 참조오류가 난다. 이것이 마치 호이스팅이 안되는 것처럼 보인다라고 표현하신 이유이다. 하지만 let과 const도 호이스팅은 이루어진다. 다만 초기화가 동시에 일어나지 않아 참조할 값이 없어 오류가 나는 것이다. 그렇다면 초기화는 언제 되는가? 실제 코드가 선언되는 줄에서 역시 undefined로 초기화된다. 이는 다시 말하면 let과 const는 "선언"과 "초기화"의 시점이 다르다는 것을 이해해야 한다.