jQuery源码笔记.jpg

函数式编程之curry化

2020-04-15  本文已影响0人  柠檬果然酸

函数式编程之curry化
其目的是将function(arg1, arg2, arg3, ...)多参数转为function(arg1)(arg2)(arg3)...单参数形式

es5版

function curry(fn) {
    var args = [],
        n = fn.length; // 传入的函数的参数个数
    return function core() {
        var arg = [].slice.call(arguments); // 将函数参数转为数组
        args = args.concat(arg);
        n -= arg.length;
        return n === 0 ? fn.apply(null, args) : core;
    }
}

使用如下

var add = curry(function (a, b, c, d) {
    return a + b + c + d;
});
console.log(add(1, 2)(2)(3));
上一篇下一篇

猜你喜欢

热点阅读