函数柯里化

 实现一个add方法,使计算结果能够满足如下预期:
 add(1)(2)(3) = 6
 add(1, 2, 3)(4) = 10
 add(1)(2)(3)(4)(5) = 15
function add(){
    var _args = [].slice.call(arguments);
    var adder = function(){
        var _add = function(){
            [].push.apply(_args,[].slice.call(arguments));
            return _add;
        }
        _add.toString = function(){
            return _args.reduce(function(a,b){
                return a+b;
            })
        }
        return _add;
    }
    return adder.apply(null,_args)
}
柯里化(英语:Currying),又称为部分求值,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回一个新的函数的技术,新函数接受余下参数并返回运算结果。
接收单一参数,因为要携带不少信息,因此常常以回调函数的理由来解决。
将部分参数通过回调函数等方式传入函数中
返回一个新函数,用于处理所有的想要传入的参数

柯里化通用式

var currying = function(fn) {
    var args = [].slice.call(arguments, 1);

    return function() {
        // 主要还是收集所有需要的参数到一个数组中,便于统一计算
        var _args = args.concat([].slice.call(arguments));
        return fn.apply(null, _args);
    }
}

var sum = currying(function() {
    var args = [].slice.call(arguments);
    return args.reduce(function(a, b) {
        return a + b;
    })
}, 10)
console.log(sum(20, 10));  // 40
console.log(sum(10, 5));   // 25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值