호이스팅은 함수 선언부가 유효범위 최상단으로 끌어올려지는 현상이다.
다음과 같이 함수 표현식
을 사용하면 log를 남기는 부분에서 아직 double에 함수가 선언되기 전이라서 double이 함수가 아니라는 에러가 난다.
console.log(double);
***const double = function() {***
console.log(a*2);
}
그러나 아래와 같이 함수 선언식
으로 바꾸면 문제 없이 동작한다.
console.log(double);
***function double() {***
console.log(a*2);
}
함수 선언식으로 함수를 선언했을 때 double 함수가 제일 위로 끌어 올려지는 현상을 호이스팅이라고 한다.