一文搞懂前端柯里化函数

490 阅读1分钟

什么是柯里化函数呢?

在一个函数中,首先填充几个参数,然后再返回一个新的函数的技术,称为函数的柯里化。通常可用于在不侵入函数的前提下,为函数 预置通用参数,供多次重复调用。

封装一个柯里化函数,函数接受一个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

亲,文末,可以点个赞吗?谢谢