인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것
브라우저가 자바스크립트를 해석할 때 변수 선언문이 코드를 구현한 위치와 관계없이 맨 위로 끌어 올려지는 현상
console.log(score) // undefined
score = 80;
var score;
console.log(score) // 80
두번째 console.log(score)
가 80인 이유는 변수 호이스팅 때문이다
let과 const로 선언한 변수도 호이스팅 대상임
But! var와 달리 호이스팅 시 undefined로 변수를 초기화하지는 않는다.
-> 변수의 초기화를 수행하기 전에 읽는 코드가 먼저 나타나면 예외가 발생
어느 곳에서는 let과 const는 호이스팅 대상이 아니라고 하는 사람들도 있음
브라우저가 자바스크립트를 해석할 때 함수 선언문이 코드를 구현한 위치와 관계없이 맨 위로 끌어 올려지는 현상
function add(a, b) {
return a + b;
}
var sum = function add(a, b) {
return a + b;
}