영어로 Hoist는 '끌어올리다'라는 개념이다. 그렇다면 자바스크립트에서 Hoisting은 Var변수와 함수 선언문에서 선언 자체가, 코드의 최상단으로 위치하는 것으로 보면 된다.
조금 더 깊게 파고 들어서 자세하게 설명하면, 유효한 블록 스코프안에서 할당이 아닌 선언 그 자체만을 최상위로 이끌어 올리고 필요할 때마다 사용하는 것이라고 생각하면 된다.
그러면 호이스팅은 어떠한 친구들이 적용 될 수 있을까
다음과 같다.
var는 let, const 이전에 나온 변수선언 문법이다. 굉장히 Old한 문법이다. 그래서 var의 경우는 기본적으로 재선언이 가능하다는 점이 특징인데 이 점을 보완해서 나온 변수선언 문법이 let과 const이다.
var도 호이스팅에서 let, const와 다른점이 있다.
호이스팅 시 선언문은 유효 범위의 최상단으로 간다.
자바스크립트의 var는 단순한 블록{ }이 아닌 함수 블록function{ } 안에서 유효하다.
이것을 조금 더 풀어서 말하면 함수 스코프(Scope)안에서 유효하다 라고 말할 수 있다.