使用可变参数柯里化函数对值进行增量求和
我们可以创建一个行为如下的 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中文网其他相关文章!