모든 Declarations(function
, var
, let
, const
and class
)는 JS에서 모두 호이스팅이 됩니다. 하지만 var
가 undefined
로 초기화(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
가 초기화되지 않았다는 에러를 볼 수 있습니다.
마무리
개발 속도를 늘리고 버그를 줄이는데 자바스크립트의 동작을 이해하는 것은 중요합니다. const
와 let
이 호이스팅을 하는 것을 이해함으로써 undefined
라든지 Referrence Error
가 발생하는 것을 사전에 예방할 수 있습니다.
'Language > JavaScript' 카테고리의 다른 글
자바스크립트 반복문 (1) | 2022.05.11 |
---|---|
JS GC 내부 알고리즘 알아보기 (0) | 2021.12.20 |
Promise와 jQuery Deferred Object (0) | 2020.07.24 |
자바스크립트 이벤트 루프(Event Loop) (0) | 2020.07.16 |
자바스크립트 Array (배열) (0) | 2019.09.18 |