其实。。。就是函数柯里化curry,另外取值是调用valueOf,valueOf调用toString,所以改valueOf可以少一步 function curry(fn) { let result = 0 const _fn = function () { result += fn.apply(this, arguments) return _fn } _fn.valueOf = function() { const temp = result result = 0 return temp } return _fn } function add() { return Array.prototype.reduce.call(arguments, function(p, v) { return p + v }, 0) } add = curry(add) add(2,3,4)(2)(3) === 14 这个是不定参数的,最后结果是数字,这个还有很多变种。。。参数固定的话可以把result改成数组,每次调用就push进去,最后取值时全部塞到被curry的函数里。具体实现有很多。可以一一尝试
点赞 评论
牛客网
牛客企业服务