JavaScript에서는 함수가 또 다른 함수를 반환할 수 있습니다. 이러한 패턴은 클로저(Closure)를 활용하는 대표적인 사례로, 내부 함수가 외부 함수의 변수에 계속 접근할 수 있게 되어 상태를 유지하는 데 매우 유용합니다.
아래는 JavaScript에서 하나의 함수가 다른 함수를 반환하는 코드 예제입니다.
예제 코드
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result {
font-size: 18px;
font-weight: 500;
color: blueviolet;
}
</style>
</head>
<body>
<h1>JavaScript에서 다른 함수를 반환하는 함수</h1>
<div class="result"></div>
<button class="Btn">클릭</button>
<h3>위 버튼을 클릭하면 숫자가 2배가 됩니다</h3>
<script>
let BtnEle = document.querySelector(".Btn");
let resEle = document.querySelector(".result");
function test() {
let b = 1;
return function () {
resEle.innerHTML = "숫자 = " + (b *= 2);
};
}
let returnFunc = test();
BtnEle.addEventListener("click", () => {
returnFunc();
});
</script>
</body>
</html>코드 설명
test()함수는 지역 변수b를 선언한 뒤, 익명 함수를 반환합니다.- 반환된 함수는 클로저 역할을 하며, 외부 함수의 변수
b를 기억하고 지속적으로 접근할 수 있습니다. let returnFunc = test();를 호출하면 반환된 함수가returnFunc변수에 저장됩니다.- 버튼을 클릭할 때마다
returnFunc()가 실행되어b값이 2배씩 증가하며, 결과가 화면에 표시됩니다.
실행 결과

'클릭' 버튼을 누르면 클릭할 때마다 숫자가 2배씩 곱해져 화면에 표시됩니다.
