首页 >web前端 >js教程 >柯里化 JavaScript 函数如何增量求和?

柯里化 JavaScript 函数如何增量求和?

Susan Sarandon
Susan Sarandon原创
2024-11-28 14:48:16319浏览

How Can a Curried JavaScript Function Incrementally Sum Values?

使用可变参数柯里化函数对值进行增量求和

我们可以创建一个行为如下的 JavaScript 函数 sum 吗?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10

简而言之,该函数应该允许我们通过重复传入额外的值来累积总和

最初,我们被告知这样的函数在 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

此实现将 sum 函数包装在 v 变量中,然后返回该变量。 v 函数允许我们逐步向 n 变量添加值。通过使用运算符将​​ v 强制转换为数字,我们可以获得累加和。

在示例中,console.log 语句输出 10,即 1、2、3、4 的和。

以上是柯里化 JavaScript 函数如何增量求和?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn