JavaScript手写系列(七)(手写curring函数柯里化)

41 阅读1分钟

柯里化: 将一个多参数函数转换成多个单参数函数, 也就是将一个n元函数转换成n个一元函数(柯里化可以看做是偏函数的一种特殊应用)

在数学和计算机科学中, 柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术

function currying(fn) {
    if (fn.length <= 1) return fn
    const generator = (...args) => {
        if (fn.length === args.length) {
            return fn(...args)
        } else {
            return (...args2) => {
                return generator(...args, ...args2)
            }
        }
    }
    return generator
}