js函数柯里化

函数柯里化是什么?

函数柯里化(curry)就是只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。

函数柯里化案例?

function curry(fn) {
        var args = Array.prototype.slice.call(arguments,1);
        return function(){
            var innerArgs = Array.prototype.slice.call(arguments);
            var finalArgs = args.concat(innerArgs);
            return fn.apply(null, finalArgs);
        }
    }
    
    /*
    程序执行分析:
    1. args = [5];
    2. innerArgs = [3];
    3. finalArgs = [5,3] = [5].concat([3]);
    4. 8
    */

    function add(num1,num2) {
        return num1+num2;
    }
    //var curriedAdd = curry(add,5);
    alert(curry(add,5)(3));

函数柯里化的应用场景?

最典型的代表应用,是bind函数用以固定this这个易变对象。

Function.prototype.bind = function(context) {
    var _this = this,
    _args = Array.prototype.slice.call(arguments, 1);
    return function() {
        return _this.apply(context, _args.concat(Array.prototype.slice.call(arguments)))
    }
}

转载于:https://www.cnblogs.com/reamd/p/5529309.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值