<aside> 💡 선언부가 최상단으로 올라가는 현상
</aside>
<aside> 🔥 레코드의 생성 단계에서 완전하게 저장된 경우에만 발생
</aside>
console.log(name)
var name = "soy"
// soy
⇒ 호이스팅으로 선언부가 올라감
var name;
console.log(name) // undefined
name = "soy"
실행 컨텍스트의 생성 단계에서 초기값을 undefined로 했고 실행 단계에서 값을 업데이트하기 전 출력했기 때문에 undefined 출력
만약 const로 할당한다면
console.log(name) // 참조 에러
const name = "soy"
얘도 선언부가 올라간다고 볼 수 있는거 야냐?
왜 실행 안됨?
⇒ 실행 컨텍스트의 생성 단계에서 let과 const는 초기값을 할당하지 않기 때문에 생기는 에러
function printTxt() {} // 할당이 없는 선언만 있는 코드임
// 그래서 선언부가 호이스팅에 의해 올라가 에러 발생x
const printTx = () => {} // 참조 오류
// 선언부가 올라가도 함수가 할당되기 전이라 printTxt는 함수가 아니게 되어서 에러