BTSBRINGMEHERE 2022. 4. 19. 01:13

## 호이스팅(Hoisting)

둘리의 호의가 계속되면 권리가 아닌 호이스팅입니다....

 

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

var를 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화 시킵니다.

하지만 let 이나 const경우 호으스팅 시 변수를 초기화 시키지 않습니다.

 

호이스팅을 설명 할 때에는 코드에 선언된 변수 또는 함수를 유효한 범위의 코드 상단에 끌어 올리는 작업이라고 합니다.

function catName (name) {
	console.log(`우리집 고양이 이름은 ${name}입니다.`);
}

catName("담비");

// "우리집 고양이 이름은 담비입니다." 로 출력

JavaScript는 함수의 코드를 실행하기 전에 함수 선언에 대한 메모리부터 할당합니다.

덕분에 함수를 호출하는 코드를 함수 선언보다 앞서 배치할 수 있습니다.

 

console.log(name);
var name = "이광수"

// "undefined" 로 나옴

JavaScript는 초기화를 제외한 선언만 호이스팅합니다. 변수를 먼저 사용하고 그 후에 선언 및 초기화가 나타나면, 사용하는 시점의 변수는 기본 초기화 상태(var 선언 시 undefined, 그 외에는 초기화하지 않음)입니다.

다른 변수인 let이나 const도 호이스팅 대상이지만 var처럼 초기화 되지는 않습니다.