js函数柯里化的方法和作用实例分析


Posted in Javascript onApril 11, 2020

本文实例讲述了js函数柯里化的方法和作用。分享给大家供大家参考,具体如下:

函数柯里化的方法:

1,利用数组的reduce方法可实现柯里化,具体参见我的另外一篇文章

2,代码如下

const curry = (fn, ...args) =>{
   console.log('args',args)
  // console.log(fn.length,args.length)
  return args.length < fn.length
  // 参数长度不足时,重新柯里化该函数,等待接受新参数
  ? (...arguments) => {
    console.log('arguments',arguments)
    return curry(fn, ...args, ...arguments)
  }
  // 参数长度满足时,执行函数
  : fn(...args);
}
function sumFn(a, b, c) {
  return a + b + c;
}
var sum = curry(sumFn); 
const one = sum(2)
console.log('one:',one.toString())
const two = one(3)
console.log('two:',two.toString())
const three = two(5)
console.log('three:',three.toString())
 
//console.log(sum(2)(3)(5));//10
// console.log(sum(2, 3, 5));//10
// console.log(sum(2)(3, 5));//10
// console.log(sum(2, 3)(5));//10

js函数柯里化的方法和作用实例分析

函数柯里化的主要作用:

  • 参数复用。
  • 提前返回 ? 返回  接受余下的参数  且返回结果  的  新函数。
  • 延迟执行 ? 返回新函数,等待执行。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JSON 客户端和服务器端的格式转换
Aug 27 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
javascript椭圆旋转相册实现代码
Jan 16 Javascript
火狐下input焦点无法重复获取问题的解决方法
Jun 16 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
Oct 11 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 Javascript
vue-cli + sass 的正确打开方式图文详解
Oct 27 Javascript
vue如何解决循环引用组件报错的问题
Sep 22 Javascript
JavaScript寄生组合式继承原理与用法分析
Jan 11 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
element 动态合并表格的步骤
Dec 31 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 #Javascript
JavaScript运行机制实例分析
Apr 11 #Javascript
js中调用微信的扫描二维码功能的实现代码
Apr 11 #Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
Apr 11 #Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 #Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 #Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 #Javascript
You might like
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
Python中使用中文的方法
2011/02/19 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python print不能立即打印的解决方式
2020/02/19 Python
详细分析Python垃圾回收机制
2020/07/01 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
数据库专业英语
2012/11/30 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
校三好学生主要事迹
2014/01/11 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
解放思想演讲稿
2014/09/11 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
部门2015年度工作总结
2015/04/29 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
雨中的树观后感
2015/06/03 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
Python与C++中梯度方向直方图的实现
2022/03/17 Python
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android