高阶函数和闭包、函数柯里化

本文探讨了高阶函数中的柯里化和反柯里化的概念,通过ES6示例解释了如何使用currying函数将sayHello函数进行柯里化,同时介绍了这两种技巧的区别:柯里化用于创建针对性强的函数,而反柯里化则扩展了函数的适用范围。
摘要由CSDN通过智能技术生成

高阶函数:使用回调函数就使用过高阶函数啦。
柯里化:就是函数和参数结合产生一个新函数。
柯里化是固定部分参数,返回一个函数接受 剩余参数,的函数结构。目的为了缩小适用范围,创建一个针对性更强的函数
核心思想是把多参数传入的函数拆成单参数(或部分)函数,内部再返回调用下一个单参数
(或部分)函数,依次处理剩余的参数。而反柯里化,从字面讲,意义和用法跟函数柯里化相比正好相反,扩
大适用范围,创建一个应用范围更广的函数。使本来只有特定对象才适用的方法,扩展到更多的对象。

// ES6方式!
function currying(fn,...rest1){
  return function(...rest2){
    return fn.apply(null, rest1.concat(rest2))
  }
}

//接上面将一个 sayHello函数柯里化试试:
function sayHello(name, age, fruit){
console.Log(console.log(`我叫 ${name},我${age}岁了,我喜欢吃 ${fruit}`))
}
var curryingShowMsg1 = currying(sayHello,‘小明')
curryingShowMsg1(22,'苹果') //我叫小明,我 22 岁了,我喜欢吃苹果
var curryingShowMsg2 = currying(sayHello,‘小衰',20)
curryingShowMsg2('西瓜') //我叫小衰,我 20 岁了,我喜欢吃西瓜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值