1. 호이스팅이란?
호이스팅(Hoisting)은 자바스크립트에서 변수와 함수 선언이 해당 스코프의 최상단으로 끌어올려지는 현상을 말합니다. 즉, 코드가 실행되기 전 자바스크립트 엔진이 변수와 함수의 선언을 메모리에 할당합니다. 이로 인해 변수와 함수가 선언 되기 전 호출되더라도 에러가 발생하지 않습니다.
2. 호이스팅의 작동 방식
- 변수 호이스팅:
- var로 선언된 변수는 선언만 호이스팅되고, 초기화는 코드 실행 시점에서 이루어짐, 따라서 변수 선언 이전 접근할 경우 undefined를 반환함
- let과 const로 선언된 변수는 호이스팅되지만, "일시적 사각지대(Temporal Dead Zone)"이 있어 초기화 전에는 접근할 수 없음
- 함수 호이스팅:
- 함수 선언문은 전체가 호시팅되며, 함수 선언 이전에 호출해도 정상적으로 작동
- 함수 표현식은 변수와 동일하게 호스팅되므로, 함수 표현식이 초기화되기 전 호출할 수 X
사용 예제
- 변수 호이스팅
console.log(x); // undefined
var x = 5;
console.log(x); // 5
위 코드는 다음과 같이 해석됩니다.
var x; // 변수 선언이 호이스팅
console.log(x); // undefined
var x = 5; // 초기화
console.log(x); // 5
- let과 const 호이스팅
console.log(x); // Syntax ErrorReferenceError: Cannot access 'x' before initialization
let x = 10;
let으로 선언된 변수는 초기화전 접근할 수 없으므로 ReferenceError가 발생합니다.
- 함수 호이스팅
console.log(Person()); // Yolk!
function Person() {
return "Yolk!";
}
위 코드는 정상적으로 작동합니다. 함수 선언이 호이스팅되어, 호출 전 정의된 함수로 인식됩니다.
- 함수 표현식 호이스팅
console.log(myFunc()); // TypeError: myFunc is not a function
var myFunc = function() {
return "Hi!";
}
이 경우, myFunc는 변수로 호이스팅되지만, 초기화되지 않아 TypeError가 발생합니다.
요약
- 호이스팅을 이해하면 자바스크립트의 변수와 함수 사용 시점을 명확히 할 수 있음
- 예기치 않은 에러를 방지하는 데 도움을 줌
LIST
'Front-End > JavaScript' 카테고리의 다른 글
[Javascript] 정규표현식 (0) | 2025.02.26 |
---|---|
[Javascript] Jest란 ? (0) | 2025.02.25 |
[Javascript] 슬라이드 구현하기 (0) | 2025.02.16 |
[Javascript] 14강 Javascript의 프로토타입 객체 (1) | 2025.02.15 |
[Javascript] 13강 자바스크립트 모듈 (0) | 2025.02.13 |