기록
article thumbnail
Published 2023. 1. 1. 23:30
호이스팅(hoisting) 개발/JavaScript
728x90

인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. 그렇기 때문에 선언 코드가 최상단으로 옮겨진다는 설명을 많이 들을 수 있습니다. 코드를 실행하기 전에 함수 선언에 대한 메모리부터 할당하기 때문에 함수를 호출하는 코드를 함수 선언보다 먼저 배치하여도 동작할 수 있습니다.

studyHoisting("호이스팅");

function studyHoisting(text){
	console.log(text + "(hoisting)");
}

 

하지만, 선언만 호이스팅합니다. 변수를 먼저 사용하고 이후에 선언 및 초기화를 작성하면 먼저 사용한 시점의 변수는 기본 초기화 상태를 사용합니다. 선언 없이 초기화만 할 경우에는 예외가 발생합니다.

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

 

호이스팅은 다른 자료형과 변수에도 잘 작동하는데, let과 const 로 선언한 경우 호이스팅 시 var와 다르게 기본으로 undefined로 초기화하지 않기 때문에 초기화 없이 실행하는 코드를 작성하면 예외가 발생합니다.
참고사이트
MDN (호이스팅) : https://developer.mozilla.org/ko/docs/Glossary/Hoisting
728x90