**호이스팅(Hoisting)**은 자바스크립트 엔진이 변수와 함수 선언을 실행 전에 메모리에 먼저 등록하는 현상입니다.
즉, 코드 작성 위치와 상관없이 변수와 함수가 마치 최상단으로 끌어올려진 것처럼 동작합니다.
하지만 모든 선언이 같은 방식으로 호이스팅되는 것은 아니며, var
, let
, const
그리고 함수 선언 방식에 따라 동작이 달라집니다.
이 글에서는 호이스팅의 개념과 작동 원리, 그리고 올바른 사용법을 정리해보겠습니다.
**호이스팅(Hoisting)**은 JavaScript 엔진이 변수와 함수 선언을 코드 실행 전에 메모리에 저장하는 과정을 의미합니다.
var
로 선언된 변수는undefined
로 초기화되며,let
과const
는 초기화 없이 선언만 호이스팅되어 **TDZ(Temporal Dead Zone)**의 영향을 받습니다.- 함수 선언문(Function Declaration)은 전체가 호이스팅되지만,
- 함수 표현식(Function Expression)은 변수 호이스팅 규칙을 따릅니다.
📌 호이스팅의 핵심 특징
var
, let
, const
및 함수 선언 방식에 따라 호이스팅 동작이 다름변수는 선언 방식(var
, let
, const
)에 따라 호이스팅되는 방식이 다릅니다.