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 相关文章推荐
javascript jQuery插件练习
Dec 24 Javascript
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
Aug 29 Javascript
javascript学习(一)构建自己的JS库
Jan 02 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
JS冒泡事件的快速解决方法
Dec 16 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
Feb 13 Javascript
点击标签切换和自动切换DIV选项卡
Aug 10 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
Feb 25 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 Javascript
vue在路由中验证token是否存在的简单实现
Nov 11 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
php调用mysql数据 dbclass类
2011/05/07 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
任意位置显示html菜单
2007/02/01 Javascript
Javascript模块模式分析
2008/05/16 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
如何用python免费看美剧
2020/08/11 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
《金子》教学反思
2014/04/13 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
办公室个人总结
2015/02/28 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL