Hoisting에 관하여

2575 단어 TILTIL

hoist라는 단어의 의미는 끌어올리기 라는 뜻이다 자바스크립트에서 끌어올려지는 것은 변수이다. var 키워드로 선언된 모든 변수 선언은 호이스트 된다. 호이스트란 변수의 정의가 그범위에 따라 선언 과 할당 으로 분리되는 것을 의미한다. 즉 변수가 함수내에서 정의 되었을경우 선언이 함수의 최상위로 , 함수 바깥에서 정의 되었을 경우, 전역 컨텍스트의 최상위로 변경이 된다.

function getX() {
  console.log(x); // undefined
  var x = 100;
  console.log(x); // 100
}
getX();

다른 언어의 경우엔, 변수 x 를 선언하지 않고 출력하려 한다면 오류를 발생할 것이다. 하지만 자바스크립트에서는 undefined라고 하고 넘어간다. var x = 100; 이 구문에서 var x;를 호이스트하기 때문이다. 즉, 작동 순서에 맞게 코드를 재구성하면 다음과 같다.

function getX() {
  var x;
  console.log(x);
  x = 100;
  console.log(x);
}
getX();

좋은 웹페이지 즐겨찾기