首页 >web前端 >js教程 >如何在不使用 \' \' Babel 技巧的情况下创建 JavaScript 中的可变柯里求和函数?

如何在不使用 \' \' Babel 技巧的情况下创建 JavaScript 中的可变柯里求和函数?

DDD
DDD原创
2024-11-28 07:12:09425浏览

How Can a Variadic Curried Sum Function in JavaScript Be Created Without Using the ' ' Babel Trick?

不使用 Plus Babel 技巧的可变柯里求和

JavaScript 可以创建一个如下所示的 sum 函数吗?

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

人们错误地认为这是不可能的。不过,利用运算符结合 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));

关键在于 valueOf 和 toString 方法的定义柯里化函数。这些方法规定了函数在强制转换为原始值(例如数字)时的行为方式。通过在这些方法中返回 n,我们确保保留柯里化函数的内部状态(当前总和)。

此技术可以在不依赖 babel 技巧的情况下创建可变参数柯里化求和函数。

以上是如何在不使用 \' \' Babel 技巧的情况下创建 JavaScript 中的可变柯里求和函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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