[javascript] 자바스크립트의 호이스팅(Hoisting) 동작 방식

자바스크립트에서 호이스팅은 변수 선언과 함수 선언을 끌어올리는 동작을 말합니다. 이것은 코드 실행 전에 엔진에 의해 처리됩니다. 호이스팅은 개발자들이 이해하고 의도적으로 사용할 수 있도록 하는 중요한 개념입니다.

변수 호이스팅

변수 호이스팅은 변수의 선언이 해당 범위의 최상단으로 끌어올려지는 동작입니다.

예를 들어,

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

위의 코드는 실제로는 다음과 같이 처리됩니다.

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

변수 호이스팅은 변수의 선언部만 끌어올려지며 할당 부분은 끌어올려지지 않습니다.

함수 호이스팅

함수 선언도 마찬가지로 해당 범위의 최상단으로 끌어올려집니다.

예를 들어,

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

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

위의 코드는 다음과 같이 처리됩니다.

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

함수 표현식과 화살표 함수는 호이스팅되지 않으므로 함수 선언과 다르게 동작합니다.

결론

호이스팅은 자바스크립트의 동작 방식을 이해하는 데 중요한 개념입니다. 이를 알고 있다면 코드를 더 잘 이해하고 예측할 수 있으며, 버그를 예방하고 코드를 개선하는 데 도움이 됩니다.