5. 일을 대신해주는 도우미 (함수)/5.3 함수의 생활공간 (함수 스코프)

5.3.2 호이스팅 현상 이해하기 - 미리 사용할 수 있는 신기한 특징

thejavascript4kids 2025. 7. 4. 02:41

📘 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 학습을 원하신다면?
이 포스팅에서 다룬 내용을 실제로 실습해보세요!
무료 JavaScript 학습 플랫폼에서 단계별 학습과 실시간 코드 실행을 통해
더욱 효과적이고 재미있게 학습하실 수 있습니다.
📝 실시간 코드 실행 📊 학습 진도 관리 👥 체계적 커리큘럼
📚 171개 체계적 학습레슨 · 📋 855개 4지선다 연습문제 · 🆓 완전 무료 · ⚡ 즉시 시작