实现求和函数 add
求和函数的用法:
add(1, 2, 3, 4, 5);
add(1)(2)(3)(4)(5);
add(1, 2)(2, 3, 5);
1、用闭包抑制变量
// 实现方法1,用闭包抑制变量,保存参数,当参数达到一定的个数进行求和操作 const add = (function (length) { let allArgs = []; function _add (...args) { allArgs = [...allArgs, ...args]; if (allArgs.length >= length) { let res = allArgs.reduce((prev, cur) => prev + cur, 0); allArgs.length = 0 return res; } else { return _add; } } return _add })(5)
2、用偏函数创建一个符合参数个数的求和函数
const curry = func => { // 判断参数是否达到长度,没有到达长度会进行参数合并然后递归调用 const g = (...allArgs) => allArgs.length >= func.length ? func(...allArgs) : (...args) => g(...allArgs, ...args) return g } // 创建一个两个数求和的函数,根据需要创建符合才是个数的的求和函数 const foo = curry ((a, b) => { return a + b })
3、用 bind
进行无限次的参数绑定,最后单独调一个方法执行
function add (...args) { let _add = add.bind(null, ...args); _add.result = function () { return args.reduce((prev, curr) => prev + curr, 0) } return _add } console.log(add(1, 2)(3).result())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论