📘 5.3.2 호이스팅 현상 이해하기 - 미리 사용할 수 있는 신기한 특징
지난 시간의 기억이 아직 따뜻하게 남아있나요? 우리는 함께 지역변수와 전역변수에 대해 이야기를 나누었어요. 오늘은 자바스크립트의 신기한 특징 중 하나인 호이스팅에 대해 가볍게 살펴보려 해요.
호이스팅은 마치 미리 준비된 계획표처럼, 아직 만들지도 않은 함수를 먼저 사용할 수 있게 해주는 특별한 기능이에요.
🧠 새로운 단어들과 친해지기
새로운 개념을 배우기 전에, 그 언어들과 먼저 친숙해져보겠어요.
| 단어 | 쉬운 설명 |
|---|---|
| 호이스팅 | 함수를 선언하기 전에 미리 사용할 수 있게 해주는 자바스크립트의 특별한 기능이에요. |
| 방법1 (기본 방법) | function 키워드로 만드는 함수로, 호이스팅이 잘 작동해요. |
| 방법2 (변수 방법) | 변수에 함수를 담는 방식으로, 호이스팅이 다르게 작동해요. |
| 미리 사용 | 함수를 만들기 전에 먼저 부르는 것을 말해요. |
예를 들어 학교 시간표를 생각해보세요. 1교시 수학 시간에 "2교시 영어책 가져와"라고 할 수 있는 것처럼, 호이스팅도 미리 계획된 것을 먼저 사용할 수 있게 해줘요.
✨ 간단하게 알아보는 호이스팅
호이스팅은 자바스크립트만의 특별한 기능 중 하나예요. 다른 프로그래밍 언어에서는 보기 어려운 신기한 현상이죠.
방법1 (기본 방법)으로 만든 함수는 코드 어디에 있어도 미리 사용할 수 있어요. 마치 학교 시간표가 미리 정해져 있어서 언제든 확인할 수 있는 것처럼요.
방법2 (변수 방법)으로 만든 함수는 변수를 만든 이후부터만 사용할 수 있어요.
가장 중요한 점은 호이스팅이 있다고 해서 마구잡이로 사용하면 안 된다는 거예요. 코드를 읽기 쉽게 하려면 가능한 위에서 아래 순서대로 작성하는 것이 좋아요.
일상 속의 비유: 학교 준비물 목록
호이스팅을 더 친근하게 이해하기 위해 학교 준비물 목록의 이야기를 해볼게요.
선생님이 한 주 준비물 목록을 월요일에 미리 나눠주면, 여러분은 수요일에 필요한 색연필을 화요일에 미리 준비할 수 있어요. 목록에 있으니까 미리 알 수 있는 거죠.
자바스크립트의 호이스팅도 비슷해요. 방법1으로 만든 함수들은 마치 미리 배포된 준비물 목록처럼, 코드를 실행하기 전에 미리 확인되어서 언제든 사용할 수 있어요.
하지만 방법2로 만든 함수는 그때그때 만들어야 해서 미리 사용할 수 없어요. 마치 갑자기 필요한 준비물은 그 순간에 준비해야 하는 것처럼요.
⚙️ 간단한 예시로 확인하기
아주 간단한 예시들로 호이스팅을 확인해보겠어요.
🔹 방법1의 호이스팅 (작동함)
// 함수를 만들기 전에 사용해도 작동해요!
sayHello("철수"); // "안녕하세요, 철수님!" 출력
function sayHello(name) {
console.log("안녕하세요, " + name + "님!");
}
// 함수를 만든 후에도 당연히 작동해요
sayHello("영희"); // "안녕하세요, 영희님!" 출력
🔹 방법2는 호이스팅 안됨 (작동 안함)
// 이렇게 하면 오류가 나요!
// sayGoodbye("민수"); // 오류! 아직 함수가 없어요
let sayGoodbye = function(name) {
console.log("안녕히 가세요, " + name + "님!");
};
// 함수를 만든 후에는 사용할 수 있어요
sayGoodbye("민수"); // "안녕히 가세요, 민수님!" 출력
🔹 안전한 방법: 순서대로 작성하기
// 가장 안전한 방법: 함수를 먼저 만들고 사용하기
function calculateSum(a, b) {
return a + b;
}
let result = calculateSum(5, 3);
console.log("결과: " + result); // "결과: 8"
🧠 간단한 주의사항
호이스팅을 사용할 때 주의해야 할 점들을 알아보겠어요.
첫 번째: 호이스팅이 있다고 해서 마구잡이로 사용하면 안 돼요. 코드를 읽는 사람이 헷갈릴 수 있어요.
두 번째: 방법2는 호이스팅이 안 되니까 만든 후에 사용해야 해요.
세 번째: 코드를 위에서 아래로 순서대로 작성하는 습관을 기르는 것이 가장 좋아요.
네 번째: 헷갈릴 때는 항상 함수를 먼저 만들고 나중에 사용하는 것이 안전해요.
✏️ 연습문제로 개념 다지기
이제 여러분이 직접 배운 내용을 체험해볼 시간이에요. 호이스팅이라는 신기한 현상을 손끝으로 느껴보며, 그 특성을 이해해보겠습니다.
Ex1) 방법1 호이스팅 확인하기
다음 코드가 오류 없이 작동하는 이유를 설명해보세요.
// 함수를 만들기 전에 사용했는데 왜 작동할까요?
greetStudent("민지"); // "안녕하세요, 민지 학생!"
function greetStudent(name) {
console.log("안녕하세요, " + name + " 학생!");
}
정답: 방법1로 만든 함수는 호이스팅으로 인해 코드 어디에 있어도 미리 사용할 수 있기 때문입니다.
Ex2) 방법2와 차이점 찾기
다음 두 코드 중 어느 것이 오류가 날까요?
// 코드 A
sayA();
function sayA() {
console.log("A 함수");
}
// 코드 B
sayB();
let sayB = function() {
console.log("B 함수");
};
정답: 코드 B가 오류가 납니다. 방법2는 변수를 만든 후에만 사용할 수 있기 때문입니다.
Ex3) 안전한 코드 작성하기
호이스팅에 의존하지 않고 안전하게 코드를 작성해보세요.
// 좋은 예시: 함수를 먼저 만들고 사용하기
function calculateSum(a, b) {
return a + b;
}
let result = calculateSum(5, 3);
console.log("결과: " + result);
🔄 4단원 복습하기 - 반복문을 기억하고 있나요?
호이스팅을 배웠는데, 지난 시간에 배운 반복문과 함께 사용해볼까요?
복습 문제) for문과 호이스팅 함수 조합하기
호이스팅이 되는 함수를 만들고, for문으로 여러 번 호출해보세요.
// 해답:
// 함수를 나중에 선언해도 호이스팅으로 미리 사용 가능!
for (let i = 1; i <= 3; i++) {
printNumber(i); // 함수를 먼저 사용
}
function printNumber(num) { // 방법1은 호이스팅됨
console.log("숫자: " + num);
}
💫 마무리하며
오늘은 자바스크립트의 특별한 기능인 호이스팅에 대해 가볍게 살펴봤어요. 호이스팅은 방법1로 만든 함수를 미리 사용할 수 있게 해주는 신기한 기능이지만, 모든 상황에서 사용하는 것은 아니에요.
가장 중요한 포인트는 방법1은 어디서든 사용 가능하고, 방법2는 만든 후에 사용 가능하다는 것이에요. 그리고 코드를 순서대로 작성하는 습관을 기르는 것이 더 중요해요.
호이스팅의 더 자세한 내용은 나중에 고급 과정에서 배울 예정이니까 지금은 부담 갖지 마세요. 여러분이 차근차근 성장하는 모습을 보며 저도 함께 기뻐하고 있어요! 계속 함께해주세요! ✨
✅ 학습 완료 체크리스트
이번 시간에 배운 내용들을 차근차근 확인해보세요!
| 학습 내용 | 이해했나요? |
|---|---|
| 호이스팅의 기본 개념 | ✅ |
| 방법1과 방법2의 차이 | ✅ |
| 간단한 호이스팅 규칙 | ✅ |
| 안전한 코드 작성법 | ✅ |
| 실전 예제 이해 | ✅ |
| 4단원 반복문 복습 | ✅ |
📂 마무리 정보
오늘 배운 5.3.2 내용이 여러분의 마음 속에 잘 자리잡았나요? 호이스팅의 더 자세한 내용은 고급 과정에서 배울 예정이니까 지금은 기본 개념만 이해하면 충분해요!
기억할 점: 오늘 배운 내용을 꼭 연습해보시고, 궁금한 점이 있으면 언제든 다시 돌아와서 읽어보세요.
무료 JavaScript 학습 플랫폼에서 단계별 학습과 실시간 코드 실행을 통해
더욱 효과적이고 재미있게 학습하실 수 있습니다.
'5. 일을 대신해주는 도우미 (함수) > 5.3 함수의 생활공간 (함수 스코프)' 카테고리의 다른 글
| 5.3.3 중첩 함수 만들기 - 함수 안의 함수 (0) | 2025.07.04 |
|---|---|
| 5.3.1 지역변수와 전역변수 - 우리 집과 내 방 (0) | 2025.07.04 |