2019独角兽企业重金招聘Python工程师标准>>>

柯里化是函数式变成的基础之一,js写函数式常用的工具之一,此处试着实现一个 柯里化函数工具

var curry=function(f){var fun=""var len= f.length  //参数长度var args=[]        //参数保存用于延迟执行的时候添加参数return fun= function (){                //延迟执行函数for(var i=0;i<arguments.length;i++){if(len==args.length){         //参数长度达成  开始执行函数args=[]return   f.apply(null,args)}  else{args.push(arguments[i]);   //push参数进入参数保存列表if(len==args.length){      //每次push都要检查是否达成条件  出发执行函数动作args=[];return   f.apply(null,args)}}}return fun}
}

函数组合用于将多个函数组合成一个函数,流式的处理数据

var compose = function() {var args=arguments;     //获取所有函数return function(x) {var result=null;for(var i=args.length;i>0;i--){ //反转函数if(i==args.length){result=  args[i-1].call(null,x)}else{result=  args[i-1].call(null,result)}}return result;};
};

测试:

var gg=1234;
function  Sum(a,b,c,d,e,f,g,h,j){return gg+a+b+c+d+e+f+g+h+j;
}var xxx=curry(Sum);
console.log(xxx(1));      //[Function]
console.log(xxx(2));      //[Function]
console.log(xxx(4,5,6));  //[Function]
console.log(xxx(7,8,9));  //[Function]
console.log(xxx(10));     //52

转载于:https://my.oschina.net/hunjixin/blog/794475

Curry的js实现相关推荐

  1. JS函数curry(柯里化)

    原文地址:http://blog.jobbole.com/77956/ 什么是柯里化? 柯里化是这样的一个转换过程,把接受多个参数的函数变换成接受一个单一参数(译注:最初函数的第一个参数)的函数,如果 ...

  2. JS实现curry(柯里化)的四种简单方式

    // 方法1 function curry (fn, args) {const length = fn.lengthconst args = args || []return function () ...

  3. 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  4. js map遍历 修改对象里面的值_求职季之你必须要懂的原生JS(上)

    点击上方"IT平头哥联盟",选择"置顶或者星标" 一起进步- 互联网寒冬之际,各大公司都缩减了HC,甚至是采取了"裁员"措施,在这样的大环境 ...

  5. 准备:新V8即将到来,Node.js的性能正在改变

    V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经 ...

  6. js reduce实现中间件_js数组高阶方法reduce经典用法代码分享

    以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...

  7. promise 浏览器实现的源码_【大前端01-01】函数式编程与JS异步编程、手写Promise...

    [简答题]一.谈谈你是如何理解JS异步编程的,EventLoop.消息队列都是做什么的,什么是宏任务.什么是微任务? 如何理解JS异步编程 众所周知JavaScript语言执行环境是"单线程 ...

  8. d3js mysql_D3.js入门指南

    近期略有点诸事不顺,趁略有闲余之时,玩起D3.js.之前实际项目中主要是用各种chart如hightchart.echarts等,这些图形库玩起来貌都是完美的,一切皆可配置,但几年前接触了D3之后,觉 ...

  9. 翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

最新文章

  1. 报表应用系列——图表JFreeChart: 第 4 章 折线图
  2. CMU赵越:异常检测的算法、案例和落地
  3. zoj-3795-Grouping-tarjan确定最长的公路收缩
  4. 图解Numpy的tile函数
  5. MATLAB从入门到精通:MATLAB 图形操作
  6. 再问数据中台 - 数据中台建设的最大的挑战是什么
  7. iPhone 9或于4月3日发布;复制粘贴之父Larry Tesler去世;Android 11开发者预览版来了!| 极客头条...
  8. mybatisplus报的mysql错误归纳
  9. vue-cil解决开发环境的跨域问题
  10. ffmpeg 转换VC工具 V1.1.1
  11. C# FAQ: const和static readonly有什么区别?
  12. 你靠谱吗?看看“价值观”究竟有多重要
  13. python输出excel指定列为文本格式_POI设置excel某列值为文本格式
  14. 函数的正交与向量正交
  15. 【GNSS】GREAT多频多系统GREAT-UPD开源代码-第4.1章 代码解读之gnss.h/gnss.cpp
  16. Java的字符串连接符(+)
  17. 电子数字计算机的应用,你了解电子数字计算机的发展吗?人类是如何应用计算机技术的?...
  18. JSP+ssm计算机毕业设计大媛小南美味佳肴网站8p0nh【源码、数据库、LW、部署】
  19. jason字符串解析
  20. 修改计算机用户密码,修改计算机密码_怎么修改电脑开机密码

热门文章

  1. django实现,微博第三方登录超详细
  2. 台式计算机是否属于工装,工装分类《机械加工所谓的工装都包含什么?》
  3. 数据资源 | 八大板块!数据公开下载渠道
  4. 系统bug是什么意思
  5. Pocsuite编写ActiveMQ任意文件上传漏洞脚本
  6. Python 安装 Crypto
  7. 请把ios文件解压出来是什么意思_手机资讯:最新屏蔽 iOS升级弹窗的 2 种方法
  8. oracle学习_创建函数调用函数及存储过程
  9. 【FPGA——Cyclone Ⅳ学习笔记】五.数码管静态显示(EP4CE6F17C8)
  10. 【python】采集每日必看黄色软件数据~