호이스팅은 끌어올리는 것을 뜻한다.
var
console.log(str);
var str = '안녕하세요';
자바스크립트에서는 var str 부분을 선언 단계, ‘안녕하세요’ 부분을 할당 단계로 구분한다.
위와 같이 var 변수를 초기화 하기 전에 출력을 하려고 할 때, 선언 단계가 호이스팅(끌어 올라감) 되면서 undefined로 초기화 되어 출력된다.
함수 호이스팅
func();
function func() {
console.log('안녕하세요');
}
위의 코드도 마찬가지로 함수도 호이스팅이 되기 때문에 출력이 된다.
let, const
console.log(str);
console.log(str2);
let str = '안녕하세요';
const str = '안녕하세요';
let과 const는 var와 마찬가지로 호이스팅은 되지만, var처럼 undefined로 초기화 되지는 않고 에러가 뜬다. 이런 일이 발생하는 이유를 TDZ(Temporal Dead Zone)이라고 한다. 일시적 데드 존은 변수를 사용할 수 없는 일시적인 비활성 상태를 나타낸다.
'FrontEnd' 카테고리의 다른 글
[React] React.js 시작하기 (0) | 2023.11.02 |
---|---|
[JS] Window 객체 (0) | 2023.10.19 |
[JS] 변수 및 스코프 (0) | 2023.10.19 |