자바스크립트 내부 함수 (Inner Functions)

자바스크립트는 함수가 일급 객체로 취급되기 때문에, 함수 내에 함수를 정의하는 것이 가능합니다. 이러한 함수를 “내부 함수” 또는 “중첩 함수”라고 부릅니다. 내부 함수는 외부 함수의 스코프에서 선언되어 변수와 파라미터에 접근할 수 있습니다. 이렇게 함으로써 코드의 구조화와 모듈화를 용이하게 할 수 있습니다.

내부 함수의 선언

내부 함수는 외부 함수 내에서 선언될 수 있으며, 이를 통해 외부 함수의 변수와 파라미터에 접근할 수 있습니다. 다음은 내부 함수를 선언하는 간단한 예제입니다.

function outerFunction() {
  const outerVariable = "Hello";

  function innerFunction() {
    console.log(outerVariable);
  }

  innerFunction();
}

outerFunction(); // 출력: Hello

위 예제에서 innerFunctionouterFunction 내에서 선언되었습니다. innerFunctionouterVariable에 접근하여 값을 출력하는 기능을 수행합니다. outerFunction은 호출되면 내부 함수 innerFunction도 함께 호출되어 “Hello”라는 값을 출력합니다.

내부 함수의 활용

내부 함수는 외부 함수의 스코프를 공유하기 때문에, 외부 함수에서 선언된 변수를 내부 함수에서 활용할 수 있습니다. 이를 통해 코드의 재사용성과 모듈화를 향상시킬 수 있습니다. 예를 들어, 다음은 클로저(Closure)를 이용하여 카운터를 구현하는 예제입니다.

function counter() {
  let count = 0;

  function increment() {
    count++;
    console.log(count);
  }

  function decrement() {
    count--;
    console.log(count);
  }

  return {
    increment,
    decrement
  };
}

const myCounter = counter();

myCounter.increment(); // 출력: 1
myCounter.increment(); // 출력: 2
myCounter.decrement(); // 출력: 1

위 예제에서 counter 함수는 incrementdecrement 내부 함수를 반환합니다. 이렇게 함으로써 count 변수는 외부 함수인 counter의 스코프 내에서 유지되면서, incrementdecrement 함수에서 접근 및 수정할 수 있습니다. 이를 통해 캡슐화된 카운터 객체를 생성할 수 있습니다.

결론

자바스크립트의 내부 함수는 코드의 구조화와 모듈화를 용이하게 해주는 강력한 기능입니다. 내부 함수를 활용하여 변수와 파라미터에 접근하여 재사용성과 모듈화를 증가시킬 수 있습니다. 유지보수성과 가독성을 향상시키기 위해 내부 함수를 적절히 활용하는 것이 좋습니다.