- 호이스팅은 코드가 실행되기 전 선언문이 해당 범위의 맨 위로 끌어올려지는 것처럼 동작하는 현상입니다. ⬆️
var 호이스팅은 선언 전에 접근 시 undefined로 초기화되어 에러 없이 undefined가 출력됩니다. 👻
- 함수 선언식 호이스팅은 선언 전에 접근 시 함수 본문으로 초기화되어 정상적으로 함수가 호출됩니다. 🚀
var로 선언된 함수 표현식은 var 호이스팅 규칙을 따라 undefined로 초기화되므로, 선언 전에 호출하면 TypeError가 발생합니다. 🚫
undefined로 초기화되는 var의 특성은 예상치 못한 버그를 유발할 수 있습니다. 🐛
- TDZ(Temporal Dead Zone)는
const, let, class 키워드에 적용되어 선언 전에 변수에 접근하는 것을 금지하며, 접근 시 ReferenceError를 발생시킵니다. 🚧
- 호이스팅은 자바스크립트 초기 설계 시 초보자도 쉽게 코드를 작성할 수 있도록 에러 없이 선언 전 호출을 허용하기 위해 존재했습니다. 👶
- 호이스팅이 여전히 존재하는 이유는 레거시 코드와의 하위 호환성 유지 및 함수 선언식의 가독성 장점 때문입니다. 📜
- 모든 키워드(
function declaration, var, const, let)는 호이스팅이 동작하지만, 초기화 방식과 TDZ 적용 여부에 따라 동작이 다릅니다. 🔑
- 호이스팅은 모르면 버그를 유발하는 '함정'이지만, 이해하면 적절한 키워드 선택을 돕는 '도구'가 됩니다. 🛠️
데브허브 | DEVHUB | [10분 테코톡] 헤일리의 호이스팅