∞. 기술 면접/8. 자바스크립트

09. 기술면접 - 자바스크립트 - 호이스팅 (Hoisting)

THE HEYDAZE 2021. 10. 22. 16:10
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다

 

호이스팅 (Hosting)

- Hosting(끌어 올리다) 이란 선언한 함수변수해석기가 가장 상단에 있는 것 처럼 인식한다
- JS 해석기는 코드의 라인 순서와 관계 없이 함수 선언식(함수 표현식 X)과 변수를 위한 메모리 공간을 먼저 확보
- 따라서, function a() 와 var 는 코드의 최상단으로 끌어 올려진 것 (hostied) 처럼 보인다

function a() {
    return 10;
}
a(); // 5
function a() {
    return 5;
}

순서대로 동작했다면 a 는 10이 출력되어야 하는 데, 해석기가 함수실행보다 선언을 먼저 인식하기 때문에 a는 재정의 되어서 5가 된다

function a() {
    return 10;
}
a(); // 10
var a = function a() {
    return 5;
}
a(); // 5

함수 표현식으로 작성을 하게 되는 경우 호이스팅은 적용되지 않아 작성한 순서대로 출력되는 것을 볼 수 있다