whatisthis?

javaScript. 호이스팅(Hoisting) 이란? 본문

WEB STUDY/JAVASCRIPT

javaScript. 호이스팅(Hoisting) 이란?

thisisyjin 2021. 12. 6. 10:27

 

 

 

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

인터프리터가 변수와 함수의 메모리 공간선언 전에 미리 할당하는 것을 의미

 

var 호이스팅 시 undefined로 변수를 초기화
let const 호이스팅 시 변수를 초기화하지 않음

 

호이스팅을 "변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는" 것으로 말하곤 함.

따라서 변수를 정의하는 코드보다 사용하는 코드가 앞서 등장할 수 있음.

 

 

  • 자바스크립트 엔진은 코드를 실행하기 전 실행 컨텍스트를 위한과정에서 모든 선언(var, let, const, function, class)을 메모리에 저장한다.

 

  • 코드 실행 전 이미 변수선언/함수선언이 메모리에 저장되어 있기 때문에 선언문보다 참조/호출이 먼저 나와도 오류 없이 동작한다. 

 

 

https://mywebproject.tistory.com/74

 

JavaScript) 변수 선언과 데이터타입

변수 선언 - let과 const와 var의 차이 우선, Hoisting과 Scope의 개념을 먼저 알아야 한다. cr: https://www.howdy-mj.me/javascript/var-let-const/ var, let, const의 차이 ⏤ 변수 선언 및 할당, 호이스팅,..

mywebproject.tistory.com

이전에 포스팅했던 변수선언 관련해서 [호이스팅]에 대해 내용 추가함.

 

 

사용 예.

catName("클로이");

function catName(name) {
  console.log("제 고양이의 이름은 " + name + "입니다");
}

 

 


💡 주의 

 

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

위와 같이 변수의 선언(const/let/var) 없이 초기화만 한다면,

Reference Error이 발생한다. (호이스팅이 되지 않으므로!)

 

 

 

 

 

 

REFERENCE

 

 

호이스팅 - 용어 사전 | MDN

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

developer.mozilla.org

 

[JavaScript] 호이스팅(Hoisting)이란? - 하나몬

❗️호이스팅이란? 호이스팅은 코드를 실행하기 전 변수선언/함수선언을 파일의 맨 위로 끌어올리는 것이 아니다. 호이스팅은 코드가 실행하기 전 변수선언/함수선언이 파일의 맨 위로 끌어 올

hanamon.kr