题解 | #柯里化#

柯里化

https://www.nowcoder.com/practice/bb78d69986794470969674a8b504ac00

		function test(a,b,c){ return a+b+c; }	
//对原函数柯里化操作
		function curryIt(fn) {
       // 构建一个参数数组,所有函数共享,闭包的应用
        const argArr = []
        return function res(arg){
            // 每调用一次就将参数添加到共享数组中
            argArr.push(arg)
            // 判断共享数组中参数个数【调用次数】是否和原函数参数个数一致
            if(argArr.length == fn.length){
             // 一直接调用原函数,注意this指向,call接受一个个的独立值,因此使用剩余参数语法展开
                return fn.call(this,...argArr)
            }else{
                // 当参数个数没有达到要求时,就继续返回该函数
                return res
            }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务