본문 바로가기

JavaScript

[JavaScript] Hoisting(호이스팅)

 호이스팅의 사전적인 의미는 끌어당기다로, 자바스크립트에서는 변수의 '선언'와 함수의 '선언'을 끌어당기는 행위를 말한다.

console.log(a());
console.log(b());

fuction a(){
	return 'a';
}
var b = function bb(){
	return 'bb';
}

 위와 같은 프로그램이 있다. 자바스크립트를 자주 사용하지 않은 사람이라면 이는 첫줄에서 오류가 날 것이라고 생각할 것이다. 하지만 자바스크립는 내부 시스템에서 각 함수의 선언을 가장 상단으로 뜰어 올려주기 때문에, 오류가 발생하지 않는다. 이것이 바로 Hoisting 기능인 것이다. 

 

 하지만 호이스팅은 철저히 '선언'에 해당하는 기능이다. 만약 아래와 같은 프로그램이 있다면, 선언과 할당이 분리되어 있으므로 에러가 발생할 것이다.

var b;

console.log(a());
console.log(b());

fuction a(){
	return 'a';
}
b = function bb(){
	return 'bb';
}