함수 표현식에서 선언부는 변수를 선언한 부분입니다. 그래서 실제로는 다음과 같이 실행되어 ‘printHello는 함수가 아니다’라는 오류 메시지가 나오게 됩니다.
var printHello;
printHello();
printHello = function printHello(){
console.log("Hello");
}
화살표 함수 방식으로 정의해도 결국 함수 표현식처럼 변수에 할당하는 것이므로 함수 표현식과 같은 원리로 호이스팅됩니다. 단, 함수 표현식이나 화살표 함수를 let이나 const 키워드로 선언했다면 호이스팅 자체가 되지 않습니다.