柯里化函数

每天提高一点点

一、柯里化函数是什么?

柯里化函数:把接收多个参数的函数变成一个可以接收单一参数的函数,并且返回接受余下的参数并返回结果的新函数

二、举例

假定foo是一个计算和的柯里化函数,下面四种调用方式返回的结果都是true
foo(1,2,3) == 6
foo(1,2)(3) == 6
foo(1)(2,3) == 6
foo(1)(2)(3) == 6

不需要使用foo(1)(2)(3)()的方式来调用函数,进行比较时将会调用函数的toString方法返回结果;但是如果直接输出结果为add函数,但是可以通过Number(foo(1)(2)(3))的方法输出结果6

 function foo(){
	let args = [...arguments] 
	const add = (...rest) => {
		args.push(...rest)
		return add
	}
	// 关键,重写了函数内部的toString,当进行比较的时候就会调用toString
	add.toString = function(){
		return args.reduce((pre,cur) => {
			return pre + cur
		},0)
	}
	return add
}

需要使用foo(1)(2)(3)()的方式来调用函数

const foo = function (func){
    let args = []
    return function result(...rest){
        args.push(...rest)
        if (rest.length === 0) {
            return args.reduce((pre,cur)=>{
        		return pre + cur
    		})
        }else {
            return result
        }
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值