0
点赞
收藏
分享

微信扫一扫

实现add(1)(2)(3)

千白莫 2022-03-31 阅读 121
javascript

与柯里化定义类似:函数柯里化的实现_前端-pww的博客-CSDN博客

判断下一个括号中是否有参数,如果有就拼接参数,继续调用curry函数

如果没有参数,则直接返回fn

function add1 (...args) {
    //求和
    return args.reduce((a, b) => a + b)
}
function currying (fn,...args) {
    return function(...rest) {
        if (rest.length) {
            return currying(fn,...args,...rest)
        } else {
            return fn.call(this,...args)
        }
    }
}
let add = currying(add1)
console.log(add(1)(2)(3)(4, 5)())  //15
console.log(add(1)(2)(3, 4, 5)())  //15
console.log(add(1)(2, 3, 4, 5)())  //15
举报

相关推荐

0 条评论