호이스팅

서성원·2024년 7월 22일

자바스크립트

목록 보기
3/6
post-thumbnail

호이스팅이란

JavaScript 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트의 선언문을 해당 범위의 맨 위로 끌어올리는 듯한 현상

예시

const x = 1;
{
  console.log(x); // 참조 에러
  const x = 2;
}

const x = 2 선언이 호출되지 않으면 콘솔문이 상위 범위에서 x을 읽을 수 있어야 한다.
하지만 const 선언은 정의된 전체 범위를 포함시키므로 콘솔문은 아직 초기화되지 않은 const x = 2 선언에서 x를 대신 읽어 ReferenceError 를 낸다.

호이스팅이 아닌 경우

{
  var x = 1;
}
console.log(x); // 1

선언 전의 접근은 없는데, 이는 var 선언이블록으로 범위가 지정되지 않았기 때문에 상관없다.

let, const, class 는 호이스트되지 않는 것으로 보는 것을 선호

temporal dead zone이 선언 이전의 변수 사용을 엄격하게 금지하고 있기 때문

profile
FrontEnd Developer

0개의 댓글