<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는 함수가 아니게 되어서 에러

연습문제