函数柯里化(Currying)
函数柯里化:固定某个函数的一些参数,得到该函数剩余参数的新函数,如果没有剩余参数,则调用。
优点
:
参数复用
提前返回
js
// sum函数
function sum(a, b, c, d) {
let arr = [a, b, c, d];
return arr.reduce((acc, current) => acc + current, 0)
}
// 柯里化函数
function currying(fn, ...rest) {
return fn.length > rest.length ? (...newRest) => currying(fn, ...rest, ...newRest) : fn(...rest)
}
// sum函数进行柯里化
let sumCurrying = currying(sum)
console.log(sumCurrying(1,2,3,4)) // 10
console.log(sumCurrying(1)(2)(3)(4)) // 10
// sum函数
function sum(a, b, c, d) {
let arr = [a, b, c, d];
return arr.reduce((acc, current) => acc + current, 0)
}
// 柯里化函数
function currying(fn, ...rest) {
return fn.length > rest.length ? (...newRest) => currying(fn, ...rest, ...newRest) : fn(...rest)
}
// sum函数进行柯里化
let sumCurrying = currying(sum)
console.log(sumCurrying(1,2,3,4)) // 10
console.log(sumCurrying(1)(2)(3)(4)) // 10