[typescript] let과 const 키워드를 사용할 때 호이스팅이 발생하는가요?
let
과 const
는 블록 스코프를 갖는 블록 레벨 변수 선언 방식입니다. 이러한 특성 때문에 호이스팅이 발생하지 않습니다. 이는 변수가 선언된 위치에서 초기화되기 전까지 사용할 수 없다는 것입니다.
예를 들어, 다음 TypeScript 코드를 살펴보겠습니다.
console.log(a); // 오류: 변수 'a'를 참조하기 전에 초기화되었습니다.
let a = 10;
이 코드에서 a
를 선언하기 전에 console.log(a)
를 호출하면 오류가 발생합니다. 이는 let
키워드로 선언된 변수가 호이스팅되지 않기 때문입니다.
반면 var
키워드로 선언된 변수는 호이스팅이 발생합니다. 예를 들어:
console.log(b); // undefined
var b = 20;
var
키워드로 선언된 변수는 호이스팅으로 인해 선언부가 최상단으로 올라가게 되며, 초기화되기 이전에 변수에 접근하면 undefined
가 출력됩니다.
따라서, let
과 const
키워드를 사용할 때에는 호이스팅이 발생하지 않으므로 변수 선언 전에 변수를 참조하면 오류가 발생하게 됩니다.