호이스트(Hoist)의 뜻은 무언가를 들어 올리거나 끌어 올리는 동작을 설명한다.
자동차를 강에서 올린다(Hoist)라고 할 수 있다.
JavaScript에서 호이스팅은 코드가 실행되기 전에 변수 및 함수 선언(이름)이 로컬 범위(유효 범위)의 맨 위로 들어 올려지거나 끌어올려지는 경우를 말한다.
console.log(name); // undefined
var name = "ChatGPT";
위 코드는 호이스팅 때문에 아래와 같이 동작한다.
var name;
console.log(name); // undefined
name = "ChatGPT";
// console.log(age); // ReferenceError: Cannot access 'age' before initialization
let age = 25;
// console.log(city); // ReferenceError: Cannot access 'city' before initialization
const city = "Seoul";
함수가 밑에 선언되어 있어도, 제대로 작동한다.
func() //hositing test. 정상적으로 작동한다.
function func() {
console.log('hositing test');
}
호이스팅의 존재는 초보 개발자들에게 혼란을 줄 수 있기 때문에 변수나 상수를 사용하기 전에 항상 선언하고 초기화하는 것이 좋다.