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

자바스크립트(JavaScript) 커링(Currying) 완벽 가이드: 개념과 활용 예제

커링(Currying)이란?

커링(Currying)은 여러 개의 인수를 받는 함수를, 각각 하나의 인수만 받는 일련의 함수들로 변환하는 기법입니다. 쉽게 말해, 원래 한 번에 모든 인수를 받아야 하는 함수가 첫 번째 인수를 받고 새로운 함수를 반환하고, 그 함수가 두 번째 인수를 받아 또 다른 함수를 반환하는 식으로 동작하며, 마지막 인수가 전달될 때까지 이 과정이 반복되는 것입니다.

커링 함수의 활용

커링은 다음과 같은 상황에서 특히 유용합니다.

  • 같은 변수를 반복해서 전달해야 하는 번거로움을 줄여줍니다.
  • 이벤트 핸들링(event handling)에서 매우 효과적으로 사용할 수 있습니다.

기본 문법

function Myfunction(a) {
  return (b) => {
    return (c) => {
      return a * b * c;
    }
  }
}

예제 1: 커링을 사용하지 않은 경우

아래 예제에서는 커링을 적용하지 않았기 때문에, 부피를 계산하기 위해 모든 매개변수를 한꺼번에 volume(11, 2, 3) 형태로 전달합니다.

<html>
<body>
<script>
  function volume(length, width, height) {
    return length * width * height;
  }
  document.write(volume(11, 2, 3));
</script>
</body>
</html>

실행 결과

66

예제 2: 커링을 사용한 경우

아래 예제에서는 커링을 적용했기 때문에, 매개변수가 volume(11)(2)(3)처럼 하나씩 순차적으로 전달됩니다. 마지막 함수가 호출되어 최종 인수를 받으면 계산 결과가 반환됩니다.

<html>
<body>
<script>
  function volume(length) {
    return function(width) {
      return function(height) {
        return height * width * length;
      }
    }
  }
  document.write(volume(11)(2)(3));
</script>
</body>
</html>

실행 결과

66

두 예제 모두 결과값은 66로 동일하지만, 커링을 사용하면 인수를 단계별로 나누어 전달할 수 있어 코드의 재사용성과 유연성이 크게 향상된다는 점이 핵심 차이입니다.