实现原理
主要使用闭包实现,其实我们无时无刻不在使用柯里化函数,只是没有将它总结出来而已。它的本质就是将一个参数很多的函数分解成单一参数的多个函数。 实际应用中:
- • 延迟计算 (用闭包把传入参数保存起来,当传入参数的数量足够执行函数时,开始执行函数)
- • 动态创建函数 (参数不够时会返回接受剩下参数的函数)
- • 参数复用(每个参数可以多次复用)
实现
onst curry = fn =>
(judge = (...args) =>
args.length >= fn.length
? fn(...args)
: (...arg) => judge(...args, ...arg));