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实现自定义标签
May 08 Javascript
js操作ajax返回的json的注意问题!
Feb 23 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
Nov 07 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
jQuery学习笔记之入门
Dec 14 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
bootstrap输入框组件使用方法详解
Jan 19 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
js实现一个页面多个倒计时的3种方法
Feb 25 Javascript
jQuery实现查看图片功能
Dec 01 jQuery
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
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 使用redis锁限制并发访问类示例
2016/11/02 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
用JQuery调用Session的实现代码
2010/10/29 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
Vite和Vue CLI的优劣
2021/01/30 Vue.js
python写日志封装类实例
2015/06/28 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
Python的两道面试题
2013/06/29 面试题
房屋出租协议书
2014/04/10 职场文书
爱护花草树木的标语
2014/06/11 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
整改通知书
2015/04/20 职场文书
解除合同协议书范本
2016/03/21 职场文书
人民币使用说明书
2019/04/17 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android