호이스팅

김영후·2022년 11월 17일
0

CS

목록 보기
2/15
post-thumbnail

호이스팅

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

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

반면, let과 const로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않습니다.



catName("클로이");

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

처럼 함수 호출이 함수 자체보다 앞서 존재하지만, 코드가 동작하는 모습을 확인할 수 있다.



JavaScript는 초기화를 제외한 선언만 호이스팅한다.

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

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



let과 const로 선언한 변수도 호이스팅 대상이지만, var와 달리 호이스팅 시 undefined로 변수를 초기화하지는 않는다. 따라서 변수의 초기화를 수행하기 전에 읽는 코드가 먼저 나타나면 예외가 발생한다.

profile
배움기록

0개의 댓글