변수/함수의 선언이 해당 스코프의 최상단으로 끌어올려지는 현상
자바스크립트만의 특징
자바스크립트 엔진의 2단계 실행 구조로 인해 발생
var → 호이스팅 자체는 적용되나 값 할당이 뒤늦게 적용
console.log(myVar); // undefined
var myVar = 5;
let, const → 호이스팅되지만 TDZ(Temporal Dead Zone)이 적용되어 접근 불가
console.log(myLet); // ReferenceError: Cannot access 'myLet' before initialization
let myLet = 10;
console.log(myConst); // ReferenceError: Cannot access 'myConst' before initialization
const myConst = 20;
함수 선언문 → 정상 동작
alert(greet("김철수")); // 선언 이전에 호출 가능
function greet(name: string){
return `안녕하세요, ${name}님!`;
}