当前位置: 首页 > news >正文

js实现函数柯里化

记录一下实现函数柯里化的过程

这里有一个求和的函数

function sum(a,b,c){return a + b + c;
}
sum(1,2,3) //6

先来了解一下什么是柯里化?

柯里化是一种将使用多个参数的函数转换成一系列使用一个参数的函数的技术。
这种技术通常用于创建一个参数接收器,或者用于提前确定某些参数。

所以,我们现在来创建一下柯里化函数吧,这个函数接收一个需要柯里化的普通函数 fn,然后它返回一个新的函数,直到函数接收的参数的数量达到了fn的参数的数量,那么返回fn的运行结果.

就是实现 curry(sum)(1)(2)(3) 等于6.

上代码

function curry(sum){//debugger//用于接收柯里化函数的每次传入的参数let params = [] //返回一个新的函数,使其再次接收传入的参数return function fun(a){ params.push(a);//判断柯里化函数接收的参数数量是否达到sum的参数总量 if(sum.length > params.length){ return fun;} else {//当柯里化参数达到sum的参数需求量,传入柯里化参数返回sum的运行结果return sum.apply(this, params) } }}
curry(sum)(1)(2)(3) //6

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++复习的长文指南(二)
  • 智慧矿山 | 选矿工艺可视化
  • 论文中的流程图参考图片
  • ADI - 通过5 V至24 V输入提供双极性、双向DC-DC流入和流出电流
  • JavaScript之typeof运算符
  • [PM]面试题-综合问题
  • 什么情况?我代码没了
  • 《基于FPGA的数字信号处理》专栏的导航与说明
  • MySQL update set语句中 逗号与and的区别
  • 配置第三方软件仓库
  • 24暑假2C
  • 深度学习:Head、Neck和Backbone的含义与作用
  • 云计算 Logstash 配置管理
  • word预览方式---插件,vue-office-docx、docx-preview、mammoth.js
  • Redis和Mysql如何保持数据一致性
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Create React App 使用
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • HTTP请求重发
  • iOS编译提示和导航提示
  • Java多态
  • Map集合、散列表、红黑树介绍
  • Odoo domain写法及运用
  • React16时代,该用什么姿势写 React ?
  • spark本地环境的搭建到运行第一个spark程序
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 创建一种深思熟虑的文化
  • 多线程 start 和 run 方法到底有什么区别?
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 七牛云假注销小指南
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 物联网链路协议
  • 你对linux中grep命令知道多少?
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (void) (_x == _y)的作用
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (转)setTimeout 和 setInterval 的区别
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .Net - 类的介绍
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net的DataSet直接与SQL2005交互
  • .net解析传过来的xml_DOM4J解析XML文件
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [AIGC] HashMap的扩容与缩容:动态调整容量以提高性能
  • [cb]UIGrid+UIStretch的自适应
  • [CC-FNCS]Chef and Churu
  • [GWCTF 2019]我有一个数据库1
  • [LeetCode]剑指 Offer 42. 连续子数组的最大和