函数柯里化

匿名 (未验证) 提交于 2019-12-02 23:48:02

什么是函数柯里化?实现 sum(1)(2)(3) 返回结果是1,2,3之和
函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术

function sum(a) {     return function(b) {         return function(c) {             return a+b+c;         }     } } console.log(sum(1)(2)(3)); // 6 引申:实现一个curry函数,将普通函数进行柯里化: function curry(fn, args = []) {     return function(){         let rest = [...args, ...arguments];         if (rest.length < fn.length) {             return curry.call(this,fn,rest);         }else{             return fn.apply(this,rest);         }     } } //test function sum(a,b,c) {     return a+b+c; } let sumFn = curry(sum); console.log(sumFn(1)(2)(3)); //6 console.log(sumFn(1)(2, 3)); //6    Function curry(fn,args){     var args = args || [];     return function(){         let _args = args.concat([…argunments]);         if(fn.length>_args.length){             return curry.apply(this,fn,_args)         }         else{             return fn.apply(this,_args)         }     } }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!