1. var
- 선언과 초기화가 동시에 이루어짐 (호이스팅 되며 undefined로 초기화 됨. 참조해도 오류 발생 x)
- 재할당 가능
- 재선언 가능
- 함수 레벨 스코프
2. let
- 선언과 초기화가 분리되어 이루어짐 (호이스팅 되며 선언은 되지만, 참조하면 오류 발생)
- 재할당 가능
- 재선언 불가
- 블록 레벨 스코프
3. const
- 선언과 초기화가 분리되어 이루어짐 (호이스팅 되며 선언은 되지만, 참조하면 오류 발생)
- 재할당 불가
- 재선언 불가
- 블록 레벨 스코프
4. var vs let, const
- 초기화 시점이 다름. var는 참조 에러 발생 x
5. TDZ (Temporal Dead Zone)
선언과 초기화 사이의 구간 -> 이 때 호출하면 참조 에러 발생
함수 선언문은 TDZ가 없지만, 함수 표현식은 TDZ가 존재함
** TDZ 이해 후 클로저(Closure)도 꼭 학습해보자**