var 호이스팅
인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것
var
로 선언한 변수의 경우 호이스팅 시undefined
로 변수 초기화- var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이뤄진다
let
과const
로 선언한 변수의 경우 호이스팅 시 초기화하지 않음
변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는 것
- 변수 정의 코드보다 사용 코드가 앞서 등장할 수 있음
- 함수 선언도 위와 동일
// #1 Case function
catName(name) {
console.log("제 고양이의 이름은 " + name + "입니다");
}
catName("호랑이");
/* 결과: "제 고양이의 이름은 호랑이입니다" */
// #2 Case
catName("클로이");
function catName(name) {
console.log("제 고양이의 이름은 " + name + "입니다");
}
/* 결과: "제 고양이의 이름은 클로이입니다" */