[javascript] 변수 및 함수 호이스팅(hoisting)에 대해 알아보자.

자바스크립트에서 호이스팅은 변수 및 함수 선언이 스코프 내에서 상단으로 끌어올려지는 동작을 의미합니다. 이는 코드 내에서 선언된 변수 및 함수를 해당 스코프의 시작 부분으로 이동시킨다는 것을 의미합니다.

변수 호이스팅

변수 선언은 해당 스코프의 최상단으로 끌어올려지지만, 할당 구문은 호이스팅되지 않습니다. 따라서, 변수를 선언하기 전에 참조하면 undefined가 반환됩니다.

예를 들어,

console.log(myVar); // undefined
var myVar = 5;

위 코드는 실제로 다음과 같이 해석됩니다.

var myVar;
console.log(myVar); // undefined
myVar = 5;

함수 호이스팅

함수 선언은 전체가 호이스팅되며, 함수 표현식은 호이스팅되지 않습니다. 함수 표현식은 변수 이름만 호이스팅되며, 함수 자체는 호이스팅되지 않습니다.

예를 들어,

myFunction(); // "Hello, World!"

function myFunction() {
  console.log("Hello, World!");
}

위 코드는 함수 선언이 호이스팅되므로 문제 없이 실행됩니다. 하지만 함수 표현식의 경우 호이스팅이 되지 않습니다.

myFunction(); // TypeError: myFunction is not a function

var myFunction = function() {
  console.log("Hello, World!");
};

함수 호이스팅은 코드를 이해하는 데 도움이 되지만, 코드를 읽을 때 더욱 주의 깊게 살펴봐야 합니다. 호이스팅으로 인해 의도하지 않은 동작이 발생할 수 있기 때문에 주의가 필요합니다.

호이스팅은 자바스크립트가 실행되기 전에 처리되므로 올바르게 이해하고 사용해야 합니다.

더 자세한 내용은 아래 참고 자료를 참고하세요.

참고 자료