자바스크립트에는 호이스팅(Hoisting)이라는 특징이 있다.
console.log(num);
var num;
위 코드는 아직 선언되지 않은 변수를 먼저 참조하고 있다.
변수가 아직 선언되지 않은 상태에서 참조했기 때문에 에러가 발생해야할 것 같지만
재미있게도 자바스크립트에서는 ReferenceError가 아닌 undefined가 출력된다.
이는 자바스크립트가 코드를 실행하기 전 코드를 평가하는 등 일련의 과정을 먼저 거치는데
이 때 코드에서 변수를 포함한 모든 선언문을 먼저 실행하기 때문이다.
결국 변수 선언이 어느 코드보다 우선적으로 실행되기 때문에 어느 곳에서라도 변수를 참조할 수 있다.
하지만 변수는 선언되었지만 초기화는 되지 않았기 때문에 undefined라는 값이 들어있다.
호이스팅은 어디까지나 선언문에만 해당하는 특징이기 때문에 초기화까지 함께 실행되지는 않는다.
다음 코드를 통해 변수의 선언과 초기화는 별개로 이루어진다는 것을 알 수 있다
console.log(num); // undefined
var num = 10;
console.log(num); // 10
'JavaScript > JavaScript' 카테고리의 다른 글
[Javascript] 데이터 타입이 필요한 이유 (0) | 2023.01.01 |
---|---|
[Javascript] 자바스크립트의 NaN (0) | 2023.01.01 |
[Javascript] 자바스크립트 정규식 (글자수만 제한하기) (0) | 2022.12.30 |
[Javascript] submit 전에 입력 값 길이 검사하기 (0) | 2022.12.30 |
[Javascript] 이전 페이지 URL 가져오기 (0) | 2022.12.27 |