函数柯里化

定义

计算机科学中,柯里化(英语:Currying),又译为卡瑞化加里化,是把接受多个参数函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

这是维基百科对柯里化的定义,听起来是不是有点难懂,让我们用代码演示一下吧:

function foo(m,n,x,y){
  return m+n+x+y 
}
foo(10,20,30,40)
//柯里化转化为:
function bar(m){
  return function(n){
    return function(x){
      return function(y){
        m+n+x+y
      }
    }
  }
}
bar(10)(20)(30)(40)
//简化柯里化代码
var sum3 = x => y => z => x+y+z

这样写是不是非常繁琐?我们可以使用ES6推出的箭头进行简化:

//简化柯里化代码
var sum3 = x => y => z => x+y+z

柯里化的优势

看到这里我们就大致了解了函数柯里化的过程,但是可以看到即使使用箭头函数简化之后的代码,相比于原来的代码也不占优势(可读性差),那么我们为什么要使用函数柯里化呢?

柯里化的作用和好处:

使得一个函数处理问题尽可能的单一、简单,而不是一大推处理过程交给一个函数来处理,并且可以复用和定制化,当我们看代码感受一下吧。

let log = date => type => message => {
    console.log(`[${date.getHours()}:${date.getMinutes()}][${type}]:[${message}]`);
}
let nowLog = log(new Date())
nowLog('DEBUG')('查找到路由模块的bug')
nowLog('FETURE')('添加了新的功能')
let nowAndDebugLog = log(new Date())("DEBUG")
nowAndDebugLog("找到了bug")
let nowAndFutureLog = log(new Date())("FETURE")
nowAndFutureLog("添加了新的功能")

总结

柯里化就是将多参函数转变为单参函数的过程,过程中将固定的参数先传入使用,其本质就是将某个操作中已完成的结果保留,直到其余部分后续也完成后可以一并提供的机制,通过在一个函数中返回另一个函数来进行实现。

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值