[Javascript Hoisting]

HWANGKYOJIN·2022년 10월 24일
0

JavaScript

목록 보기
11/14
post-thumbnail

Hoisting

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

자바스크립트에서는 코드를 실행하기 전에 함수 선언에 대한 메모리 부터 할당한다.

function dogName(name){
	console.log('제 강아지 이름은 " + name + "입니다.)
}
dogName('겨울이') // 제 강아지 이름은 겨울이 입니다.  

dogName('겨울이') // 제 강아지 이름은 겨울이 입니다.

function dogName(name){
	console.log('제 강아지 이름은 " + name + "입니다.)
}

함수를 먼저 실행시켜도 함수를 나중에 실행시켜도 자바스크립트에서는 선언될 당시 선언에 대한 메모리부터 할당하기에 둘다 동일한 출력값을 얻을 수 있다.

선언만 호이스팅 대상

자바스크립트는 초기화를 제외한 선언만 호이스팅한다. 사용하는 시점에서 변수는 기본 초기화 상태(var 선언시 undefined, 그 외에는 초기화 하지 않음.)

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

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

0개의 댓글