- 호이스팅은 변수와 함수를 해당 스코프의 최상단으로 끌어 올려 선언되어 지는 것을 말한다
- 변수는 기본적으로 선언,초기화,할당의 단계를 거치는데, 이는 es6 이전의 var과 es6에 도입된 let, const에 차이를 만든다
- var의 경우 선언과 초기화가 동시에 일어나 var의 선언 전에 호출을 하여도 초기화 상태인 undefined로 호출이 된다
- 이와 다르게 let은 선언이 되어지고 실제 코드에 도달하였을 때 초기화가 이루어지고
- const의 경우 선언이 되고 실제 코드에 도달하였을 때 초기화, 할당이 동시에 일어난다
- 이런 단계의 차이로 let과 const는 실제 코드가 작성되기 이전에 호출이 불가하며, 호출 시 오류를 발생한다
- 이렇게 선언과 실제 코드 작성 부분의 사이의 호출이 불가능한 구간을 TDZ라고 한다