Javascript

호이스팅(hoisting)이란?

ChrisJang 2021. 11. 5. 14:21
반응형

WHAT is hoisting?


JavaScript에서 호이스팅(hoisting)이란,

인터프리터(고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고,

번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램)가

변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다.

 

function whoAreYou(name) {
  console.log("나는 " + name + "입니다.");
}

whoAreYou("크리스");

/*
result : "나는 크리스입니다."
*/

 

whoAreYou("장크리스");

function whoAreYou(name) {
  console.log("나는 " + name + "입니다.");
}

/*
result : "나는 장크리스입니다."
*/

 


호이스팅의 대상은 선언문만 가능하다.


JavaScript는 초기화를 제외한 선언만 호이스팅합니다.

변수를 먼저 사용하고 그 후에 선언 및 초기화가 나타나면,

사용하는 시점의 변수는 기본 초기화 상태(var 선언 시 undefined, 그 외에는 초기화하지 않음)입니다. 

console.log(num); 
var num; // 선언
num = 6; // 초기화
/*
result : undefined
호이스팅한 var 선언으로 인해 undefined 출력
*/

반면, 다음 예제는 선언 없이 초기화만 존재합니다.

따라서 호이스팅도 없고, 변수를 읽으려는 시도에서는 ReferenceError 예외가 발생합니다.

console.log(num); // result : ReferenceError
num = 6; // 초기화

 

출처 :

https://developer.mozilla.org/ko/docs/Glossary/Hoisting

 

호이스팅 - 용어 사전 | MDN

JavaScript에서 호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다

developer.mozilla.org

(© 2005-2021 Mozilla and individual contributors. Content is available under these licenses.)

https://coding-factory.tistory.com/303

 

 

반응형