美文网首页jQuery源码笔记.jpg
函数式编程之curry化

函数式编程之curry化

作者: 柠檬果然酸 | 来源:发表于2020-04-15 22:38 被阅读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));
    

    相关文章

      网友评论

        本文标题:函数式编程之curry化

        本文链接:https://www.haomeiwen.com/subject/gbnvlhtx.html