写一个柯里化

柯里化🍏

柯里化通常也称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果。
如果要实现下面这个方法:
add(1, 2)(3)(4)(5, 6, 7)(9)()
上面这个函数当参数为空的时候执行了内部参数所有值的相加,所以我们应该考虑当参数不为空的时候将缓存起来,在为空的时候再相加,这样的思路会用闭包的方式来实现。下面是实现方法:

function add(){
    // 缓存所有的arguments值
    let args = [...arguments]
    // 新建fn函数实现柯里化
    let fn = function (){
            // 如果参数为空,那么递归停止,返回执行结果
         if (arguments.length === 0){
             return args.reduce((a,b) => a + b)
         } else {
             // 否则将参数保存到args里面,返回fn方法
             args.push(...arguments)
             return fn
         }
    }
    return fn
}
add(1, 2)(3)(4)(5, 6, 7)(9)() // 37

   转载规则


《写一个柯里化》 echo丶若梦 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
html中前端页面预览pdf文档的6种方法 html中前端页面预览pdf文档的6种方法
前端需要查看pdf文件的方法: 1. a链接查看。这种方法就需要人为点击链接才会显示pdf文件内容,是显示还是下载就决定于浏览器的解释方法了。 <!DOCTYPE html> <html lang="en"> <head>
2021-03-30 echo丶若梦
下一篇 
css 盒子模型 css 盒子模型
css 盒子模型(box model) 所有的html元素都可以看作盒子,在css中,”box model” 这一术语是用来布局的时候用的;css 盒子模型本质就是一个盒子,封装周围的html元素,他包括:外边距margin,边框(bod
2021-03-25 echo丶若梦
  目录