基于JavaScript函数闭包实现偏函数以及柯里化
2019-08-05 本文已影响0人
Bury丶冬天
- 1.偏函数
对函数进行偏函数操作的函数
// 偏函数
const partialApply = (fn, ...partArgs) => {
return function (...remainingArgs) {
return fn.apply(this, partArgs.concat(remainingArgs))
}
}
测试代码
const add = (a, b, c) => a + b + c
// 首先传第一个参数,然后返回一个函数
const add2 = partialApply(add, 10)
// 基于返回的函数,传第二个参数,返回一个函数
const add3 = partialApply(add2, 5)
// 使用最终返回的函数调用,并传递第三个参数,得到函数最终调用结果
console.log('偏函数', add3(5))
运行结果
偏函数 20
- 2.柯里化
演示对含有三个参数的函数进行柯里化
function curry(func) {
return function (a) {
return function (b) {
return function (c) {
return func(a, b, c)
}
}
}
}
测试代码
// 柯里化后连续调用函数
console.log('柯里化', curry(add)(10)(5)(5))
运行结果
柯里化 20