JS 函数柯里化

函数柯里化是一种函数转化方法,也是一种高阶函数,可以将一个接收多个参数的函数转化为只接收部分参数的函数。

函数柯里化实现:

function curry(fn, args) {
    var num = fn.length;
    args = args || [];

    return function() {
        // arr 用于收集传入的参数
        var arr = [].slice.call(arguments);

        // 将之前收集的参数合并到 arr
        arr = arr.concat(args);

        // 如果收集到的参数个数未达到 num,则递归调用继续收集参数
        if (arr.length < num) {
            return curry.call(this, fn, arr);
        }

        // 当收集到的参数个数达到 num, 就执行 fn
        return fn.apply(this, arr);
    }
}
此条目发表在JavaScript分类目录,贴了, 标签。将固定链接加入收藏夹。