
호이스팅이랑 변수,함수,클래스의 선언문을 코드 상단으로 끌어 올리는 것을 말한다.
js 엔진이 코드를 실행하기전 코드 전체를 한번 스캔하고 선언과 관련된 모든 것들을 상단으로 올려준다.
console.log(hi); // ReferenceError: Cannot access 'hi' before initialization
let hi ='hi';
let, const 변수는 호이스팅 되어도 변수의 선언만 올려주지 초기화는 안된다.
func(); // hi
function func(){
console.log('hi');
}
함수 선언문은 자체가 선언문이기 때문에 호이스팅이 완벽하게 된다.
console.log(func); // ReferenceError: Cannot access 'func' before initialization
let func =function(){
return 'hi';
}
함수 표현식은 변수에 함수를 할당하는 것이므로 호이스팅 되어도 초기화는 안된다.
const hello = new Class1();
// ReferenceError: Cannot access 'Class1' before initialization
class Class1 {}; // 초기화 부분
클래스도 마찬가지로 호이스팅 하더라도 초기화는 안된다.