JavaScript - Hoisting

KanDohyung·2024년 12월 12일

개념정리

목록 보기
10/28

변수, 함수 선언이 스코프의 최상단으로 끌어올려진 것 처럼 동작하는 매커니즘

변수 호이스팅

var로 선언된 변수를 스코프의 최상단으로 끌어올려짐
다만 초기화는 호이스팅 되지 않으므로 undefined를 반환함
const let도 호이스팅 되긴 하지만 초기화 되기 전에, 변수 접근이 차단되어 호이스팅 문제를 방지할 수있음

함수 호이스팅

선언문은 호이스팅 되지만 표현식은 호이스팅 되지 않음

선언문

sayHello();

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

표현식

console.log(sayHello); // undefined
sayHello(); // TypeError: sayHello is not a function

var sayHello = function () {
  console.log("Hello!");
};

주의할 점

예측의 어려움버그 위험으로 현재의 JavaScript에서는 const와 let으로 호이스팅을 방지하는 것이 권장됨

0개의 댓글