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

var curry=function(f){

var fun=""

var len= f.length //参数长度

var args=[] //参数保存用于延迟执行的时候添加参数

return fun= function (){ //延迟执行函数

for(var i=0;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

curry化 js_Curry的js实现相关推荐

  1. scala学习手记25 - Curry化

    curry翻译为中文就是咖喱.意为使用curry可以让代码更有味道. scala里的curry化可以把函数从接收多个参数转换成接收多个参数列表.也就是说我们要编写的函数不是只有一个参数列表,这个参数列 ...

  2. Scala学习:Curry化的函数

    2019独角兽企业重金招聘Python工程师标准>>> 在第1章,我们说过Scala允许你创建新的"感觉像是原生语言支持"的控制抽象.尽管到目前你已经看到的例子都 ...

  3. curry化 js_前端发动机从 bind 聊到 curry (柯里化)

    前言 很长时间没有更新,一方面是工作比较忙,另一方面自己也处于一个学习的过程.接下来应该会逐渐恢复到稳定更新的状态,分享一些有趣的知识点以及我个人的思考.感兴趣的朋友可以关注下呀! 如果有不对的地方麻 ...

  4. js最小化浏览器_Handtrack.js 开源:3行JS代码搞定手部动作跟踪

    作者|Victor Dibia 译者|薛命灯 近日,GitHub 上开源了一个名为 Handtrack.js 的项目,有了它,你只需要 3 行代码就能用来检测图片中手的动作. 演示地址:https:/ ...

  5. html 组件化 编辑器,vue.js组件化使用百度富文本编辑器(一)

    注意: 本文采用的编辑器为:idea 1.下载百度富文本编辑器,地址:https://ueditor.baidu.com/website/download.html#ueditor 2.加入到stat ...

  6. html最小化窗口,[转载]js实现窗口(支持拉伸,拖拽,最大化,最小化,滚动

    雨亭原创,转载注明 执行效果: 一窗体实现的功能: 1.鼠标拖动. 2.八个方向的拉伸. 3.可定制窗口标题,内容(文本或HTML),初始大小和位置,最小宽度,高度. 4.支持滚动条. 5.关闭窗体. ...

  7. html仿qq最小化怎么实现,JS仿QQ好友列表展开、收缩功能(第一篇)

    JS仿QQ好友列表展开.收缩功能(第一篇) 发布时间:2020-10-17 14:20:03 来源:脚本之家 阅读:96 作者:erdouzhang 效果图如下所示: html: 我的好友 张三 李四 ...

  8. 【Vue.js 知识量化】组件化开发 + 前端模块化

    Vue.js 组件化开发 组件化 认识组件化 注册组件 全局组件和局部组件 父子组件 组件数据 父子组件的通信 父->子:props 子->父:$emit() 父子组件的访问方式 $chi ...

  9. Vue.js 组件化开发

    三.组件化开发 1.1 组件化的实现和使用步骤 组件注册步骤解析 1.2 全局组件和局部组件 1.3 父组件和子组件 1.4 注册组件语法糖 1.5 组件模板抽离的写法 1.6 组件数据存放 1.7 ...

  10. echarts国内各省份地图js/json文件,全球地图js文件/汉化,字符云js文件

    echarts国内各省份地图js/json文件,全球地图js文件/汉化,字符云js文件 下载链接 世界地图 中国地图 国内各省份地图 字符云 下载链接 https://github.com/FuHan ...

最新文章

  1. 投票系统web服务器,创建一个Web投票系统
  2. js移除某个样式_js中如何移除css样式?
  3. 【运筹学】整数规划 ( 整数规划示例 | 整数规划解决的核心问题 )
  4. 第十八章 8string类insert成员函数的使用
  5. Comet OJ - Contest #0
  6. 利用ffmpeg来进行视频解码的完整示例代码
  7. web学习2--理解MVC及快速入门
  8. javascript window.history
  9. iOS tableview嵌套collectionview
  10. Spark MLlib(一)正则化特征
  11. 笔记本电脑如何保养_电脑温度一高就“翻脸”,电脑小白该如何解决?学会少花冤枉钱...
  12. Tensorflow 2.0 : FCNN
  13. 强大的视频格式转换工具——iSkysoft iMedia Converter Deluxe Mac
  14. 在线UTF-8转换成GBK工具
  15. 全球Top50搜索引擎排名,搜索引擎是什么意思
  16. 用户浏览器会话跟踪技术Cookie和Session
  17. 1.3数据库系统的组成及特点
  18. SPIKE创新科技套装做探路机器人(上)
  19. 基于python实现梯度下降法(GD)在线性回归中的应用(Boston房价预测数据集)
  20. Java开发一个登陆窗体,包括用户名,密码以及提交按钮和重置按钮,当用户输入amy,密码123456,弹出登陆成功提示对话框

热门文章

  1. 亿阳信通面试题2006.12.15
  2. Google analytics如何统计网站信息?
  3. 银行面试之MySQL数据库
  4. windows xp 下载老版本的chrome浏览器
  5. 《管理者财务知识一本通》读书笔记一
  6. qt 实现MVC Api控制器开发 web api接口-连载【5】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
  7. 关键字: CCTV5 天下足球 盗版
  8. 读书笔记:遇见未知的自己
  9. 百度指数是什么意思?其中的数值又代表什么?
  10. PCB设计中抑制电磁干扰的几个准则及窍门