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