WEB/javascript / / 2021. 12. 13. 00:53

[JavaScript] 호이스팅(Hoisting) 이란

호이스팅


var, let, const로 선언한 표현식이나 function 선언문 등을 실행 단계에서 해당 Scope의 맨 위로 옮기는 것을 말한다.

 

아래와 같이 예를 들어보자.

console.log(name); // undefined
var name = 'hello World';

해당 코드는 undefined를 return한다. JavaScript가 호이스팅을 하여 아래와 같이 해석하기 때문이다.

var name = undefined;
console.log(name);
name = 'hello World';

 

TDZ (Temporary Dead Zone)


선언은 되어있지만, 초기화가 되지 않아 이를 위한 자리가 메모리에 준비되어 있지 않은 상태

 

아래와 같이 예를 들어보자.

pi; // ReferenceError
const pi = 3.14;
pi; // 3.14

const 변수는 선언 및 초기화 전 줄까지 TDZ에 있다.

 

const 변수는 아래와 같이 선언한 후에 사용해야 한다.

const pi = 3.14;
pi; // 3.14

 

 

결론


  • var, let, const는 호이스팅 된다.
  • var는 왠만하면 쓰지말자.
  • 호이스팅은 변수 선언을 최상단으로 끌어올린다는 뜻이다.
  • let은 선언과 동시에 TDZ에 들어가 초기화가 필요한 상태가 된다.
  • const는 선언과 함께 초기화까지 이루어진다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유