当前位置: 首页 > news >正文

js curry化

第一篇文竟然是curry开始……

柯里化是什么(抄的):柯里化是这样的一个转换过程,把接受多个参数的函数变换成接受一个单一参数的函数,如果其他的参数是必要的,返回接受余下的参数且返回结果的新函数。

柯里化的作用感觉上就是把函数分成多段来完成,也许可以方便测试吧
但是至少,可以减少重复的参数

最简单的例子
function curry() {
    return function (a) {
        return function (b) {
            return a+b+5;

        }
    }
}

var test = curry();
console.log(test(1)(2));
console.log(test(3)(4));
通过curry化,原来需要传2个参数的函数变成1次传1个参数

例子2
function curry(){
    var arrayArgs = Array.prototype.slice.apply(arguments);
    return function(){
        //这个arguments是调用它的函数的arguments,在本例中即为test的arguments
        var wholeArgs = arrayArgs.concat(Array.prototype.slice.apply(arguments));
        return wholeArgs;
    }
}

var test = curry('fixed');
var result = test('new1','new2');
for(var i in result )
    console.log(result[i]);
var result = test('new3');
for(var i in result )
    console.log(result[i]);

这样的话,fixed只需要1次,之后使用的时候再也不用重复输入了
当然 可以让curry设置成接受高阶函数,这样会更灵活

还有一些作用,如延迟计算等,因为curry化有点难,似乎带来的效果也不会很好(似乎),所以先不写了

转载于:https://www.cnblogs.com/photon-phalanx/p/6107713.html

相关文章:

  • 文件的删除
  • oracle数据库中的基本语句
  • 第九次作业
  • 软件测试:心得简介!
  • python笔记常用模块
  • python 时间类型和相互转换
  • ipcs命令
  • JavaScript谁动了你的代码
  • 《Unix环境高级编程》 阅读笔记之三 - 文件I/O
  • 面向对象--类库、委托、is和as运算符、泛型集合
  • label、input、table标签
  • wireshark找不到网卡
  • 深入学习sea.js
  • 径向动画菜单
  • 可编辑文本区域
  • 【node学习】协程
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • MySQL的数据类型
  • Phpstorm怎样批量删除空行?
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • quasar-framework cnodejs社区
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring声明式事务管理之一:五大属性分析
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 给github项目添加CI badge
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 如何解决微信端直接跳WAP端
  • 使用API自动生成工具优化前端工作流
  • 网络应用优化——时延与带宽
  • 小李飞刀:SQL题目刷起来!
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ![CDATA[ ]] 是什么东东
  • #pragma pack(1)
  • ${ }的特别功能
  • $NOIp2018$劝退记
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (三) diretfbrc详解
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .net core 6 集成和使用 mongodb
  • @private @protected @public
  • @RequestBody的使用
  • @取消转义
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [Asp.net mvc]国际化
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • [FTP]pureftp部署和优化
  • [hdu 4552] 怪盗基德的挑战书
  • [HDU5685]Problem A
  • [hive] sql中distinct的用法和注意事项