函数柯里化

柯里化(currying)又称部分求值。一个柯里化的函数首先会接收一些参数,接收了这些参数后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保存起来。待到函数被真正需要求值的时候,之前传入的所有参数都会被一次性用于求值。

假设当前需要根据人员的不同打印出:我是 XX 公司 XX 部门的XX,XX 岁,代码一定可以写作:

function print(company, department, name, age) {
    console.log(`我是 ${company} ${department} 部门的 ${name},${age} 岁`);
}
print('ali', 'F77', 'zhangsan', 20);
print('ali', 'F77', 'lisi', 30);

(这不是废话吗 - _-!)

与此同时可以发现,对于“公司”和“部门”,都是一样的,就没必要都作为参数传递了,除了进行最简单的固定字符的字符串拼接,还可以写作:

function curry(company, department) { //接收固定的公司、部门
  return function (name, age) {
    console.log(`我是 ${company} ${department} 部门的 ${name},${age} 岁`);
  }
}
let print = curry('ali', 'F77'); // 传递固定的公司、部门

print('zhangsan', 20);//调用 return 出来的函数并传变化的参数
print('lisi', 30);

这个示例能让你最直观地看到柯里化函数的作用,再重复一次:如果方法中固定了某些参数,你可以得到接收余下参数的一个函数

也就是说,柯里化函数调用后,得到的是一个函数。柯里化可以帮助我们把相同的参数固定下来,把任意的多参函数通过固定参数的方式,变为单参函数,这样就不用每次调用函数的时候都去反复传递这些一样的参数了。

  • 20
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值