什么是柯里化函数呢?
在一个函数中,首先填充几个参数,然后再返回一个新的函数的技术,称为函数的柯里化。通常可用于在不侵入函数的前提下,为函数 预置通用参数,供多次重复调用。
封装一个柯里化函数,函数接受一个function作为第一个参数,和若干预填充的参数用做function的参数。
//实现函数柯里化的函数:
function currying(fn, ...args) {
//fn.length有点奇怪是吧?其实不奇怪,这里表示函数fn的参数的个数
// 如果预设的参数的长度大于或者等于fn函数需要的参数的长度,那么返回fn函数的执行结果
if (args.length >= fn.length) {
return fn(...args)
}
//如果不满足,将本次传入的参数填充到到柯里化函数中,返回一个新的函数
return function (...args2) {
return currying(fn, ...args, ...args2)
}
}下面我们举两个例子
例一:
const add = function add(x) { return function (y) {
return x + y
}
}
const add1=currying(1) add1预设了x等于1并返回了一个新的函数
add1(2) //3
add1(4) //5
add1(6) //7例二:
function multiFn(a, b, c) {
return a * b * c;
}
const multi = currying(multiFn);
multi(3,4,5) //60
multi(3)(4,5) //60
mutlti (3)(4)(5) //60
const multi3 = currying(multiFn,3)
multi3(4,5) //60
multi3(4)(5) //60亲,文末,可以点个赞吗?谢谢