Written by
JJoo
on
on
호이스팅(Hoisting)
호이스팅이란?
Hoist : 끌어올리다.
호이스팅은 끌어 올린다는 뜻으로 식별자 정보를 실행 컨텍스트의 제일 위로 올리는 것이다.
실행 컨택스트가 시작하면 호이스팅이 일어나면서 변수와 함수 선언문이 제일 상단으로 끌어 올려진다.
이때 변수에 대한 할당은 되지 않은 채로 선언만 된다.
또 함수 선언문은 코드 전체가 올라간다.
var a = '123';
var b = 10;
function c(){
console.log('12');
}
// 위 코드가 호이스팅으로 식별자 정보가 제일 위로 올라가면
// 컴퓨터는 아래 코드의 순서로 코드를 인식하고 실행한다.
var a;
var b;
function c(){
console.log('12');
}
a = '123';
b = 10;
호이스팅으로 변수나 함수선언문에 대한 선언이 최상위로 끌어올려지기 때문에 함수가 나중에 선언이 되어도 오류가 나지 않는 다.
하지만 호이스팅은 변수의 선언만 위에서 정의해주는 것이기 때문에 변수에 값이 할당 되기 전에 호출하면 값은 undefined
가 된다.
d = 3;
console.log(d);
var d;
var e;
console.log(e);
e = 7;
// 결과
// 3
// undefined
호이스팅은 실행 컨텍스트가 실행될때 제일 먼저 내부 식별자 정보를 수집해서 위에 정의 해놓는 과정을 쉽게 이해하기 위해 만든 허구의 개념이다.
호이스팅 === 실행 컨텍스트가 생성(시작)되는 순간에 제일 먼저 하는 일(내부 식별자 정보 수집)
Reference
- 인프런 코어 자바스크립트
Discussion and feedback