
호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다. 반면 let과 const로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않습니다.
일반적으로 함수선언부가 아래에있으면, 에러가 뜬다.
ex) 함수 표현식으로 작성하면 에러가 발생
const a = 7 // TypeError 발생
double()
const double = function(){
console.log(a * 2)
}
하지만 이경우에는 오류가 안뜬다.
ex) 함수 선언식으로 작성하면 호이스팅의 대상이된다.
const a = 7
double()
function double(){
console.log(a * 2)
}