2022-01-08
예전에 자바스크립트를 처음 공부할 때는 호이스팅이라는 개념이 이해가 안갔던 게
회사에서 1년간 실무를 하면서 그 개념을 제대로 깨닫게 되었고,
모르는 분들을 위해서, 그리고 훗날 이 글을 볼 나 자신을 위해서라도
정리를 해보려 한다.
호이스팅이란, 코드 실행 전에 변수 선언이 최상단 라인으로 끌어올려지는 것 같은 현상을 말한다.
ㄹㅇ로다가 끌어올려지는 게 아니다.
그리고 끌어올려지는 범위는 현재 속한 함수 스코프의 최상단이다.
내가 아는 호이스팅이 되는 경우들을 모아보면 다음과 같다.
var
로 선언한 경우 호이스팅 됨사실 이 글을 쓰면서 이게 진짜 맞나? 싶어 다시 찾아봤는데.... let
과 const
, class
선언문도 모두 호이스팅 된다. (오늘 첨알음)
호이스팅이 일어나는 이유는 선언문이 다른 코드보다 메모리에 먼저 할당되기 때문인데,
var
로 선언된 변수는 선언과 동시에 undefined
로 초기화되어 메모리에 할당되지만,
let
, const
등으로 선언된 변수는 초깃값을 가지지 않고 메모리에 할당된다.