> 웹 프론트엔드 > JS 튜토리얼 > Curried JavaScript 함수는 어떻게 값을 점진적으로 합산할 수 있나요?

Curried JavaScript 함수는 어떻게 값을 점진적으로 합산할 수 있나요?

Susan Sarandon
풀어 주다: 2024-11-28 14:48:16
원래의
374명이 탐색했습니다.

How Can a Curried JavaScript Function Incrementally Sum Values?

가변 카레 함수를 사용하여 값을 증분적으로 합하기

다음과 같이 동작하는 JavaScript 함수 합계를 만들 수 있나요?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10
로그인 후 복사

간단히 말해서 이 함수를 사용하면 추가 항목을 반복적으로 전달하여 합계를 누적할 수 있습니다. value.

처음에는 JavaScript에서는 이러한 기능이 불가능하다고 들었습니다. 그러나 대체 접근 방식이 등장했습니다. sum 함수 앞에 기호를 추가하는 것입니다.

+sum(1)(2)(3)(4)
로그인 후 복사

부호는 함수와 함께 사용될 때 함수의 반환 값을 숫자로 강제 변환합니다. 따라서 이 경우 sum 함수는 이후 호출할 때마다 증가하는 숫자를 효과적으로 반환합니다.

원하는 동작을 달성하기 위해 sum 함수에 커링 기술을 사용할 수 있습니다. 구현은 다음과 같습니다.

function sum(n) {
  var v = function(x) {
    return sum(n + x);
  };

  v.valueOf = v.toString = function() {
    return n;
  };

  return v;
}

console.log(+sum(1)(2)(3)(4)); // Output: 10
로그인 후 복사

이 구현은 v 변수에 sum 함수를 래핑한 후 반환됩니다. v 함수를 사용하면 n 변수에 값을 점진적으로 추가할 수 있습니다. 연산자를 사용하여 v를 숫자로 강제하면 누적 합계를 얻을 수 있습니다.

예제에서 console.log 문은 1, 2, 3, 4의 합인 10을 출력합니다.

위 내용은 Curried JavaScript 함수는 어떻게 값을 점진적으로 합산할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿