(Javascript) 호이스팅
호이스팅(Hoisting)
자바스크립트에서 호이스팅이란 무엇일까? Hoisting은 들어올려 나르기라는 뜻을 가지고 있다.
호이스팅은 자바스크립트에서 변수와 함수를 끌어 올리는 것이다.
console.log(a());
console.log(b());
console.log(c());
function a() {
return 'a';
}
var b = function bb() {
return 'bb';
}
var c = function() {
return 'c';
}
위 코드는 자바스크립트가 아닌 다른 언어의 방식대로라면 선언하지도 않은 변수/함수를 호출하고 있기에 오류가 발생할 것이다.
하지만 자바스크립트에서는 호이스팅이 있기 때문에 뒤에 선언, 초기화한 변수를 끌어올려 가져온다.
그렇기 때문에 위 코드는 자바스크립트에서 아래와 같은 흐름으로 작동한다.
function a() {
return 'a';
}
var b;
var c;
console.log(a());
console.log(b());
console.log(c());
b = function bb() {
return 'bb';
}
c = function() {
return 'c';
}
즉 위처럼 함수,변수가 끌어올려 진다.
이때 함수선언식은 함수 통째로 올라가 있는 반면,
함수표현식은 선언만 올라가 있고 이후에 초기화가 이루어 지는 것을 확인할 수 있다.