호이스팅(Hoisting)이란?
: 인터프리터(interpreter)가 변수나 함수의 메모리 공간 선언 전에 미리 할당하는 것.
- var는 호이스팅 시에 undefined로 초기화하며 중복 선언이 가능하다.
- let은 호이스팅 시에 변수를 초기화하지 않으며 중복 선언이 불가능하며 재할당이 가능하다.
- const는 호이스팅 시에 변수를 초기화하지 않으며 중복 선언이 불가능하며 재할당도 불가능하다. 선언과 동시에 초기화하여야 한다.
- 위와 같은 특징으로 함수 call 이후에 함수 선언을 하여도 작동한다. c에서는 call 이전에 무조건 선언되어야 하는 것에 대조적이다. (c는 컴파일러언어)