개인공부/JavaScript
호이스팅
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
처럼 초기화 되지는 않습니다.