728x90
  • 호이스팅(Hoisting)의 개념
    1. 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효범위의 최상단에 선언하는 것
    2. 인터프리터가 변수와 함수의 메모리 공간으 선언 전에 미리 할당하는 것
    3. 코드를 실행하기 전 변수선언/함수선언을 해당 스코프의 최상단으로 끌어올리는게 아니라
       코드를 실행하기 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상
    4. var을 통해 정의된 변수의 선언문을 유효범위의 최상단으로 끌어올리는 행위 = '선언과 할당의 분리'
    5. var로 선언한 표현식이나 function 선언문 등을 실행단계에서 해당 Scope의 맨 위로 올리는 것

 

  • 호이스팅을 하는 이유
    변수생성과 초기화(선언과 할당)가 분리되어 진행되기 때문이다.

 

  • var와 함수 선언식만 호이스팅의 대상이 된다.
    let, const, 함수 표현식으로 선언한 함수는 호이스팅이 적용되지 않는다.

 

출처

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

https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html

https://hanamon.kr/javascript-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85%EC%9D%B4%EB%9E%80-hoisting/

https://yuddomack.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85Hoisting

https://simplejs.gitbook.io/olaf/09.-hoisting

https://tibetsandfox.tistory.com/23

728x90

+ Recent posts