호이스팅이랑 "끌어올린다"라는 뜻으로 변수 및 함수 선언문이 스코프 내의 최상단으로 끌어올려지는 현상을 말한다.
🙋🏻♂️ 대입문은 끌어올려지지 않는다
컴파일러는 자바스크립트 엔진이 인터프리팅(Interpreting)을 하기 전에 컴파일을 하는데 이 때, var a = 2;
를 2개의 구문으로 본다.
var a
a = 2
var a
는 변수 선언문으로 컴파일을 할 때 처리하고, a = 2
는 실행할 때까지 내버려둔다. 따라서, 변수 a는 호이스팅 되고 콘솔에는 다음과 같은 결과가 나온다.
함수 선언문의 경우도 호이스팅이 된다.
🙋🏻♂️ 함수 표현식은 호이스팅이 되지 않는다!!
🙋🏻♂️ 함수와 변수 선언문 중에는 함수 선언문이 먼저다.