👋 Hello, I am Seung-ho Ham

🧑🏻‍💻 A Developers who create code that changes the world

카테고리 없음

[DEV] 자바스크립트 호이스팅(hoisting)

Potato_H 2021. 5. 2. 16:33
반응형

 

 

호이스팅(hoisting) = 끌어올리다.

 

상황에따라 변수의 선언과 할당을 분리해서 선언부분을 스코프의 가장 위쪽으로 끌어올리는 것이다.

 

실제 소스코드를 끌어올리는 것은 아니고 소스를 그런식으로 해석한다는 의미이다.

 

자바스크립트 해석기는 함수 소스를 훑어보면서 var를 사용한 변수는 따로 기억해둔다.

 

즉, 변수를 실행하기 전이지만 이런변수가 있구나 하고 기억해두기 때문에 선언한 것과 같은 효과가 있는 것이다.

 

전역 범위(global scope)에서는 스크립트 단위에서 최상단으로 끌어 올려진다.

 

함수 범위(function scope)에서는 해당 함수의 최상단으로 끌어 올려진다.

 

var변수 선언과 함수선언문에서만 호이스팅이 일어나고 let/const 변수 선언과 함수표현식에서는 호이스팅이 발생하지 않는다.




열정있는 개발자 이재익 님의 자료를 참고하였습니다.
https://velog.io/@stampid/Hoisting%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85%EC%9D%B4%EB%9E%80