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

자바스크립트 명명된 함수 표현식(Named Function Expression) 이해하기

명명된 함수 표현식이란?

자바스크립트에서 명명된 함수 표현식(Named Function Expression)은 함수 표현식에 이름을 부여한 형태입니다. 일반적인 익명 함수 표현식과 달리, 함수 내부에서 자기 자신의 이름을 참조할 수 있기 때문에 재귀 호출에 특히 유용합니다.

또한 디버깅 시 콜 스택(call stack)에 함수 이름이 표시되어 에러 추적이 한결 쉬워진다는 장점도 있습니다.

예제 코드

다음은 객체(obj)의 메서드로 명명된 함수 표현식을 정의하고, 이를 활용해 팩토리얼(계승)을 계산하는 예제입니다.

<!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: 20px;
        font-weight: 500;
        color: blueviolet;
    }
</style>
</head>
<body>
<h1>자바스크립트 명명된 함수 표현식</h1>
<div class="result"></div>
<br />
<button class="Btn">CLICK HERE</button>
<h3>위 버튼을 클릭하면 obj 객체의 fact 함수 표현식이 호출됩니다.</h3>
<script>
    let resEle = document.querySelector(".result");
    let BtnEle = document.querySelector(".Btn");
    let obj = {
        fact: function factorial(n) {
            if (n <= 1) {
                return 1;
            }
            return n * factorial(n - 1);
        },
    };
    BtnEle.addEventListener("click", () => {
        resEle.innerHTML = obj.fact(5);
    });
</script>
</body>
</html>

코드 설명

  • 객체 objfact 속성에 factorial이라는 이름을 가진 함수 표현식이 할당되었습니다.
  • 함수 내부에서는 외부 변수가 아닌 자신의 이름인 factorial을 사용해 재귀 호출을 수행합니다.
  • n <= 1 조건이 기저 사례(base case)로 작동하여 재귀가 종료됩니다.
  • 버튼 클릭 시 obj.fact(5)가 실행되며, 결과값 120(5 × 4 × 3 × 2 × 1)이 화면에 출력됩니다.

실행 결과

자바스크립트 명명된 함수 표현식(Named Function Expression) 이해하기

'CLICK HERE' 버튼을 클릭하면 아래와 같이 팩토리얼 계산 결과가 표시됩니다.

자바스크립트 명명된 함수 표현식(Named Function Expression) 이해하기

정리

명명된 함수 표현식은 익명 함수와 달리 함수 이름을 통해 자기 자신을 참조할 수 있어 재귀 구현에 적합하며, 디버깅 시에도 유용합니다. 다만 함수 이름은 함수 내부에서만 유효하고 외부 스코프에는 노출되지 않는다는 점을 기억해 두면 좋습니다.