Hoisting
Javascript는 hoisting이라는 개념이 있습니다.
interpreter가 변수와 함수의 선언 전에, 메모리 공간을 미리 할당해놓는 것을 말합니다.
1
2
3
4
5
6
catName("철수");
function catName(name) {
console.log("제 고양이의 이름은 " + name + "입니다");
}
다른 언어는 함수가 나중에 선언되어 reference error를 출력하지만 JS는 철수를 정상적으로 출력합니다.
1
2
3
console.log(num); // 호이스팅한 var 선언으로 인해 undefined 출력
var num; // 선언
num = 6; // 초기화
마찬가지로 reference error가 나와야하지만 밑줄의 var num; 선언으로 인해 아래와 같이 선언이 먼저된 것으로 간주하여 undefined를 출력합니다.
1
2
3
var num; // 선언
console.log(num); // 호이스팅한 var 선언으로 인해 undefined 출력
num = 6; // 초기화
참고