본문 바로가기
FrontEnd

[JavaScript] 호이스팅

by 코딩로그 2022. 9. 5.

호이스팅

- 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. 호이스팅을 설명할 땐 주로 "변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는" 것으로 말하곤 합니다. 따라서 변수를 정의하는 코드보다 사용하는 코드가 앞서 등장할 수 있습니다. 

- 특히, var 변수의 경우 호이스팅으로 인해 undefined로 초기화하게 되므로, let과  const로 선언한 변수를 사용할 것을 권장합니다.

 

Javascript는 파싱과 실행 두 단계를 거쳐서 동작하게 됩니다.

1. 파싱 : 프로그램 전역 레벨에서의 파싱

2. 실행 : 실행문을 만나면 실행

  • 변수와 함수명이 같은 경우 아래 코드와 같이 변수가 아직 실행문을 만나기 직전으로 변수값이 undefined로 되어있는 경우 함수가 덮어쓰여져 함수 호출이 일어납니다.
    <script>
      console.log(square); //함수를 호출함(변수 x)
      console.log(square2); //함수 호출

      var square = 0;
      console.log(square); //변수를 출력함

      function square(x) {
        return x * x;
      }

      var square2 = function (x) {
        return x * x;
      };
    </script>

 

 

 

 

참고

https://developer.mozilla.org/ko/docs/Glossary/Hoisting