Language/JavaScript

const, let 호이스팅 알아보기

SambaLim 2021. 3. 17. 15:36

모든 Declarations(function, var, let, const and class)는 JS에서 모두 호이스팅이 됩니다. 하지만 varundefined 로 초기화(initialization)되는 것과 다르게 let , const 는 초기화되지 않은 상태로 남아있습니다. 이를 어떻게 확인할 수 있을지 예시로 알아봅시다.

예시

const foo = 1;
{
  console.log(foo);
  const foo = 2;
}

블록스코프안의 const foo 가 호이스팅 되지 않았다면 console.log(foo); 의 결과로 1 이 출력되었어야 합니다. 하지만, 호이스팅이 되기 때문에 Uncaunght SyntaxError 가 먼저 발생을 합니다.

Uncaught ReferenceError: Cannot access 'foo' before initialization

foo 가 초기화되지 않았다는 에러를 볼 수 있습니다.

마무리

개발 속도를 늘리고 버그를 줄이는데 자바스크립트의 동작을 이해하는 것은 중요합니다. constlet 이 호이스팅을 하는 것을 이해함으로써 undefined 라든지 Referrence Error 가 발생하는 것을 사전에 예방할 수 있습니다.