[javascript] 함수 호이스팅

자바스크립트에서 함수 호이스팅은 많은 초보자들에게 혼란을 주는 주제 중 하나입니다. 자바스크립트에서 함수 호이스팅은 어떤 동작이 발생하는지 잘 이해하는 것이 중요합니다. 이 글에서는 함수 호이스팅에 대해 알아보고, 변수 선언과 함수 선언의 차이에 대해 설명하겠습니다.

함수 호이스팅이란 무엇인가?

함수 호이스팅은 함수 선언이 스코프 내에서 최상위로 끌어올려지는 것을 의미합니다. 이것은 변수 호이스팅과 달리 함수 선언만이 해당되며, 함수 표현식은 호이스팅되지 않습니다. 예를 들어, 함수 선언문은 변수에 할당된 함수 표현식과는 다르게 호이스팅됩니다.

예시로 이해하기

다음의 코드를 살펴봅시다.

console.log(double(5));

function double(num) {
  return num * 2;
}

위 코드는 에러 없이 실행됩니다. 왜냐하면 double 함수가 호이스팅되어 이미 선언되었기 때문입니다.

하지만 다음과 같은 코드는 에러를 발생시킵니다.

console.log(double(5));

var double = function(num) {
  return num * 2;
}

위 코드에서 double is not a function 에러가 발생합니다. 이는 함수 표현식이 호이스팅이 되지 않아 함수가 선언되기 전에 호출되었기 때문입니다.

결론

자바스크립트에서 함수 호이스팅은 함수 선언이 최상위로 끌어올려지는 동작을 의미합니다. 이것은 함수 선언문에만 해당되며, 함수 표현식은 호이스팅되지 않습니다. 따라서 함수를 사용하기 전에 해당 함수를 선언해야 합니다.

함수 호이스팅에 대한 이해는 코드를 작성하고 디버깅할 때 중요한 역할을 합니다. 올바른 함수 선언과 호출을 통해 예기치 않는 오류를 방지하고 안정적인 코드를 작성할 수 있습니다.