변수, 함수 선언이 스코프의 최상단으로 끌어올려진 것 처럼 동작하는 매커니즘
var로 선언된 변수를 스코프의 최상단으로 끌어올려짐
다만 초기화는 호이스팅 되지 않으므로 undefined를 반환함
const let도 호이스팅 되긴 하지만 초기화 되기 전에, 변수 접근이 차단되어 호이스팅 문제를 방지할 수있음
선언문은 호이스팅 되지만 표현식은 호이스팅 되지 않음
선언문
sayHello();
function sayHello() {
console.log("Hello!");
}
표현식
console.log(sayHello); // undefined
sayHello(); // TypeError: sayHello is not a function
var sayHello = function () {
console.log("Hello!");
};
예측의 어려움과 버그 위험으로 현재의 JavaScript에서는 const와 let으로 호이스팅을 방지하는 것이 권장됨