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 相关文章推荐
HTML 自动伸缩的表格Table js实现
Apr 01 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
Nov 17 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
JS创建类和对象的两种不同方式
Aug 08 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
May 10 Javascript
javascript如何创建对象
Aug 29 Javascript
JS实现的排列组合算法示例
Jul 16 Javascript
基于VUE的v-charts的曲线显示功能
Oct 01 Javascript
js模拟实现百度搜索
Jun 28 Javascript
vue实现移动端触屏拖拽功能
Aug 21 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
20个常用Python运维库和模块
2018/02/12 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
体育教师自我鉴定
2014/02/12 职场文书
考博专家推荐信
2014/05/10 职场文书
高中开学感言
2015/08/01 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
用Python生成会跳舞的美女
2022/01/18 Python
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers