javascript柯里化函数实现

2019-07-101445次阅读javascript

函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

const curry = (fn,...args) => 
    args.length < fn.length
        //参数长度不足时,重新柯里化该函数,等待接受新参数
        ? (...arguments) => curry(fn,...args,...arguments)
        //参数长度满足时,执行函数
        : fn(...args);

// const curry = function(fn,...args){

//     console.log(args);

//     if(args.length < fn.length){
//         return function(...rest){
//             return curry(fn,...args,...rest);
//         }
//     }

//     return fn(...args);
// }

function sumFn(a,b,c){
    return a + b + c;
}

const sum = curry(sumFn);

console.log( sum(2)(3)(5) );//10
console.log( sum(2,3,5) );//10
console.log( sum(2,3)(5) );//10

函数柯里化的主要作用:

  • 参数复用
  • 提前返回 – 返回接受余下的参数且返回结果的新函数
  • 延迟执行 – 返回新函数,等待执行
上一篇: ES6可迭代对象有哪些特点  下一篇: 如何让 (a == 1 && a == 2 && a == 3) 的值为true?  

javascript柯里化函数实现相关文章