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 相关文章推荐
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
JavaScript程序中实现继承特性的方式总结
Jun 24 Javascript
bootstrap multiselect 多选功能实现方法
Jun 05 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
微信小程序 Storage更新详解
Jul 16 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
如何基于jQuery实现五角星评分
Sep 02 jQuery
Vue中用JSON实现刷新界面不影响倒计时
Oct 26 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
基于mysql的论坛(2)
2006/10/09 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
vue interceptor 使用教程实例详解
2018/09/13 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
python executemany的使用及注意事项
2017/03/13 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
简单了解Django模板的使用
2017/12/20 Python
python3 实现调用串口功能
2019/12/26 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
恐龙的灭绝教学反思
2014/02/12 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
Docker安装MySql8并远程访问的实现
2022/07/07 Servers