웹 개발/데일리 토픽

호이스팅 (Hoisting)

ecofinder 2024. 1. 17. 11:50
반응형

호이스팅 (Hoisting)

안녕하세요 여러분! 오늘은 웹 개발에서 중요한 개념인 "호이스팅 (Hoisting)"에 대해 알아보려고 해요! 🚀

호이스팅은 JavaScript에서 변수와 함수 선언이 어떻게 동작하는지 이해하는 데 도움이 되는 개념입니다. 코드가 실행되기 전에 변수와 함수 선언문이 메모리에 끌어올려지는 특징을 가지고 있어요. 호이스팅을 이해하면 코드를 작성하는 순서와 변수의 스코프를 더 잘 이해할 수 있습니다. 😊

호이스팅의 작동 원리

호이스팅의 작동 원리를 간단하게 설명해볼게요:

  1. 선언의 끌어올림: JavaScript 엔진은 코드를 실행하기 전에 변수와 함수 선언문을 찾아서 메모리에 끌어올립니다. 이를 호이스팅이라고 부릅니다.
  2. 할당 보류: 변수 선언은 호이스팅되지만, 초기화는 그 위치에 맞게 보류됩니다. 따라서 변수에 접근하면 `undefined`가 할당됩니다.

호이스팅의 예시

다음은 호이스팅을 보여주는 예시입니다:

// 호이스팅 예시 1
console.log(name); // undefined 출력
var name = 'Alice';
console.log(name); // 'Alice' 출력

// 호이스팅 예시 2
console.log(getAge()); // 'Oliver' 출력
function getAge() {
  return 'Oliver';
}

위 예시에서 첫 번째 `console.log`에서 `name` 변수에 접근하면 호이스팅에 의해 변수가 끌어올려져 있지만, 아직 초기화되지 않았으므로 `undefined`가 출력됩니다. 이후 `var name = 'Alice'`으로 변수를 초기화하면 정상적으로 값을 출력할 수 있게 됩니다. 마찬가지로 두 번째 `console.log`에서 `getAge` 함수를 호출하면 호이스팅에 의해 함수가 끌어올려져 있으므로 정상적으로 함수를 호출하여 값을 출력할 수 있게 됩니다. 🙆‍♀️

호이스팅의 주의할 점

호이스팅은 유용한 도구지만 몇 가지 주의할 점이 있어요:

  • 초기화 시점의 중요성: 호이스팅은 변수 선언을 끌어올리지만, 초기화는 해당 변수에 도달한 시점에서 진행되므로 초기화 시점을 고려해야 합니다.
  • let과 const의 블록 스코프: `var`와는 달리 `let`과 `const`는 블록 스코프를 가지므로 호이스팅되지 않습니다.

결론

호이스팅은 JavaScript에서 변수와 함수 선언이 동작하는 방식을 이해하는 데 도움을 줍니다. 변수와 함수 선언을 먼저 하지 않아도 호이스팅에 의해 코드가 정상적으로 동작하는 이유를 이해하면 더욱 효율적으로 코드를 작성할 수 있습니다. 호이스팅을 잘 활용하여 개발을 할 수 있도록 노력해봐요! 💪😄

 

 

Apple 2023 맥북 프로 14 M3

COUPANG

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형

'웹 개발 > 데일리 토픽' 카테고리의 다른 글

브라우저 렌더링 원리  (0) 2024.01.17
TDZ (Temporal Dead Zone)  (0) 2024.01.17
렉시컬 스코프 (Lexical Scope)  (0) 2024.01.17
클로저 (Closure)  (0) 2024.01.16
크로스 브라우징 (Cross Browsing)  (1) 2024.01.16