柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)。
- 柯里化包装函数
function curry(func) {
return function curried(...args) {
if(args.length >= func.length) {
return func.apply(this, args)
}else {
return function(...argsNext) {
return curried.apply(this, [...args, ...argsNext])
}
}
}
}
- 测试
function sum(a, b, c) {
return a * b * c
}
let cSum = curry(sum)
console.log( cSum(2, 2, 2) )
console.log( cSum(2, 2)(2) )
console.log( cSum(2)(2)(2) )
image.png
网友评论