더북(TheBook)

10.4.2 함수 호이스팅

9.1.2 새로운 변수 선언 키워드 let에서 호이스팅을 언급했습니다. 다시 한번 개념을 정리하면, 호이스팅은 코드를 선언과 할당으로 분리해 선언부를 자신의 스코프 최상위로 끌어올리는 것을 말합니다.

10/04/hoisting.js

console.log(num);
var num = 10;

이 코드에서 오류가 발생할 것 같지만, 호이스팅에 의해 다음 코드처럼 작동합니다.

var num; // 선언부를 스코프 최상위로 끌어올림
console.log(num); // undefined 출력
num = 10;

선언부를 최상위로 끌어올리기 때문에 결과로 undefined가 출력됩니다. 이런 호이스팅은 var 키워드로 선언한 변수에만 적용되고 letconst 키워드로 선언한 변수에는 적용되지 않습니다.

그런데 함수도 호이스팅됩니다. 다음 코드를 봅시다.

10/04/hoisting_func.js

printHello();
function printHello(){
  console.log("Hello");
}

실행결과

Hello
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.