Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 다른 함수를 반환하는 함수 – 클로저 활용 완벽 가이드

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배씩 증가하며, 결과가 화면에 표시됩니다.

실행 결과

JavaScript에서 다른 함수를 반환하는 함수 – 클로저 활용 완벽 가이드

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

JavaScript에서 다른 함수를 반환하는 함수 – 클로저 활용 완벽 가이드