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 相关文章推荐
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
jQuery div拖拽用法实例
Jan 14 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
easyui简介_动力节点Java学院整理
Jul 14 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
May 09 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
vue和H5 draggable实现拖拽并替换效果
Jul 29 Javascript
js实现右键弹出自定义菜单
Sep 08 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
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php文件操作相关类实例
2015/06/18 PHP
关于jQuery object and DOM element
2013/04/15 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
python小技巧之批量抓取美女图片
2014/06/06 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python读取文本中的坐标方法
2018/10/14 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
对python中Json与object转化的方法详解
2018/12/31 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Python实现结构体代码实例
2020/02/10 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
仓库文员岗位职责
2014/04/06 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
国贸专业求职信
2014/06/28 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
支行行长竞聘报告
2014/11/06 职场文书
费城故事观后感
2015/06/10 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript