高阶函数和函数的柯里化

一、高阶函数

定义:

  • 如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数:
    • 1、若 A 函数,接受的参数是一个函数,那么 A 就可以称为高阶函数。
    • 2、若 A 函数,调用的返回值依然是一个函数,那么 A 就可以称为高阶函数。
  • 常见的高阶函数有:Promise、setTimeout、arr.map() 等。

二、函数的柯里化

通过函数调用继续返回函数的方式,实现多次接受参数最后统一处理的函数编码形式,叫做函数的柯里化。

function sum (a,b,c) {return a+b+c
}
let result = sum(1,2,3)
console.log("普通函数:",result)// 函数柯里化
function sum2(a) {return (b) => {return (c) => {return a + b + c}}
}
let result2 = sum2(1)(2)(3)
console.log("函数柯里化:", result2)

三、综合案例

在这里插入图片描述

<body><div id="test"></div><script src="../js/react.development.js"></script><script src="../js/react-dom.development.js"></script><script src="../js/babel.min.js"></script><script type="text/babel">class Login extends React.Component {state = {username: "",password: ""}// 符合高阶函数第2条的定义,所以 saveFormData 函数叫做高阶函数// 符合函数柯里化的定义,所以 saveFormData 函数也叫函数的柯里化saveFormData = (dateType) => {return (event) => {this.setState({ [dateType]: event.target.value })}}confitm = (event) => {event.preventDefault();const { username, password } = this.state;alert(`你输入的用户名是${username},密码是${password}`)}render() {return (<div><form action="" onSubmit={this.confitm}>用户名:<input onChange={this.saveFormData("username")} type="text" name="user"/>密码:<input onChange={this.saveFormData("password")} type="password" name="password" /><button>登录</button></form></div>)}}ReactDOM.render(<Login/>, document.getElementById("test"))</script>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式行业算青春饭吗?

今日话题&#xff0c;嵌入式行业算青春饭吗&#xff1f;嵌入式行业的技术要求确实非常广泛&#xff0c;需要深厚的知识广度和深度。这意味着入行门槛较高&#xff0c;我们需要了解不仅是软件和硬件&#xff0c;还要熟悉底层接口和硬件信号的处理方式&#xff0c;了解数据在计算…

网络文件共享服务、FTP和yum仓库

目录 一、存储类型 1、存储类型一共分为三种&#xff1a; 2、三种存储架构的应用场景 二、FTP文本传输协议 1、FTP工作原理介绍 2、FTP数据连接模式 3、svftpd的安装和配置 4、vsftpd的配置作用 5、黑名单和白名单的使用&#xff08;简要介绍&#xff09; 三、YUM 1…

芯品荟 | 温控器、线控器市场调研报告

PART ONE 产品简介 一、什么是温控器、线控器 温控器\线控器属于工业测量及智能家居产品&#xff0c;目前主流的包括LCD段码屏、TFT液晶屏。 PART TWO 市场规模 智能家居线控器市场规模 智能家居已成为最具潜力的消费科技市场&#xff0c;2022年市场规模约为6515.6亿元。 …

微信小程序定义并获取日志/实时log信息

步骤一&#xff1a;开通实时日志 可以在开发者工具->详情->性能质量->实时日志&#xff0c;点击前往&#xff0c;在浏览器打开we分析界面&#xff1a; 也可登录小程序管理后台&#xff0c;点击统计进入we分析&#xff1a; 在we分析界面找到性能质量&#xff0c;打开实…

【提示学习论文七】Visual Prompt Tuning论文原理

文章目录 Visual Prompt Tuning&#xff08;VPT&#xff09;文章介绍Abstract1 Introduction2 Related Work3 Approach3.1 准备工作3.2 Visual-Prompt Tuning(VPT)3.2.1 VPT-Shallow3.2.2 VPT-Deep3.2.3 Storing Visual Prompts 存储视觉提示 4 实验主要结果模型设计变体的消融…

抠图换背景的工具有吗?分享4款好用的!

在数字时代&#xff0c;设计已经成为了我们生活中不可或缺的一部分。无论是为了工作还是个人爱好&#xff0c;我们都需要掌握一些设计技能。其中&#xff0c;抠图换背景是一项非常重要的技能。那么&#xff0c;有哪些工具可以帮助我们快速、准确地完成这项任务呢&#xff1f;今…

公司运营数据分析大屏:引领企业决策,驱动业务增长

在数字化时代&#xff0c;数据已经成为企业决策的关键。为了更好地洞察市场趋势、优化业务流程、提升运营效率&#xff0c;越来越多的企业开始引入数据分析大屏以分析公司运营状况。这一创新举措不仅改变了传统的管理模式&#xff0c;更引领企业迈向智能化决策的新篇章。 公司运…

MySQL进阶45讲【2】日志系统:一条SQL更新语句是如何执行的?

1 前言 上篇文章我们系统了解了一个查询语句的执行流程&#xff0c;并介绍了执行过程中涉及的处理模块。相信大家还记得&#xff0c;一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块&#xff0c;最后到达存储引擎。 那么&#xff0c;一条更新语句…

最新使用宝塔反代openai官方API接口搭建详细教程及502 Bad Gateway错误问题解决

一、前言 宝塔反代openai官方API接口详细教程&#xff0c;实现国内使用ChatGPT502 Bad Gateway问题解决&#xff0c; 此方法最简单快捷&#xff0c;没有复杂步骤&#xff0c;不容易出错&#xff0c;即最简单&#xff0c;零代码、零部署的方法。 二、实现前提 一台海外VPS服务…

vite打包相关+本地http-server运行打包dist文件进行检测

目录 一.去到vite.config.ts文件 1.添加内容 2.解释 3.打包 二.本地开启http-server服务 1.全局安装http-server 1.1可以通过如下命令查看是否安装http-server 1.2使用如下命令安装 2.进入项目启动服务 3.查看效果 一.去到vite.config.ts文件 1.添加内容 build: {o…

浪之潮科技:动力恢复清积碳,尾气治理三元催化修复

针对汽车出现油耗增加、动力减弱以及尾气检测不合格等情况&#xff0c;深圳市浪之潮科技有限公司&#xff08;以下简称&#xff1a;浪之潮科技&#xff09;求真务实、勇于创新&#xff0c;独创两大系统六大部位——动力恢复清积碳、尾气治理三元催化修复&#xff0c;为广大车主…

【iOS】数据持久化(四)之FMDB基本使用

正如我们前面所看到的&#xff0c;原生SQLite API在使用时还是比较麻烦的&#xff0c;于是&#xff0c;开源社区就出现了一系列将SQLite API进行封装的库&#xff0c;其中FMDB的被大多数人所使用 FMDB和SQLite相比较&#xff0c;SQLite比较原始&#xff0c;操作比较复杂&#…

进程切换和是Linux2.6内核中进程调度的算法

正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 进程切换 进程并发就需要做到进程切换&#xff0c;一个CPU一套寄存器但是需要运行的进程有很多…

基于cy7c68013的逻辑分析仪nanoDLA全套软件linux下编译测试

0. 环境 - win10 - ubuntu22 - nanoDLA 提前获取到源码&#xff1a;-> 浏览器打开 https://github.com/wuxx/nanoDLA -> Download as zip. 硬件就直接用taobao买到的&#xff0c;原理图是 1. win10出厂测试 1.1 安装pulseview nanoDLA-master\software\pulseview-0.4.…

014集:python访问互联网:网络爬虫实例—python基础入门实例

以pycharm环境为例&#xff1a; 首先需要安装各种库(urllib&#xff1a;requests&#xff1a;Openssl-python等) python爬虫中需要用到的库&#xff0c;大致可分为&#xff1a;1、实现 HTTP 请求操作的请求库&#xff1b;2、从网页中提取信息的解析库&#xff1b;3、Python与…

外贸货源怎么找?9大优质货源渠道分享!

近几年跨境电商无货源模式大火了一把&#xff0c;让不少人都跃跃欲试。毕竟这种模式投资少&#xff0c;门槛低&#xff0c;回本快&#xff0c;想增加额外收入或创业的人们都争相涌入。但是要想做得好&#xff0c;选好货源渠道就是关键了。如果不小心选错了供应商&#xff0c;可…

MybatisPlus框架入门级理解

MybatisPlus 快速入门入门案例常见注解常用配置 核心功能条件构造器自定义SQLService接口 快速入门 入门案例 使用MybatisPlus的基本步骤&#xff1a; 1.引入MybatisPlus的起步依赖 MybatisPlus官方提供了starter&#xff0c;其中集成了Mybatis和MybatisPlus的所有功能&#…

如果你正在学自动化测试,那么请你仔细看完这篇文章

接触了不少同行&#xff0c;由于他们之前一直做手工测试&#xff0c;现在很迫切希望做自动化测试&#xff0c;其中不乏工作5年以上的人。 本人从事软件自动化测试已经近5年&#xff0c;从server端到web端&#xff0c;从API到mobile&#xff0c;切身体会到自动化带来的好处与痛楚…

python面试题

python装饰器 装饰器的本质就是一个函数能为其它函数增加额外功能 装饰器不加参数 #coding:utf-8 from time import time#装饰器函数 def elapsed(target):"统计目标函数执行的耗时"def decorated(*args,**kwargs):start time()r target(*args,**kwargs)end tim…

NXP-RT1176开发(一)——环境搭建(MCUXpressoIDE/VSCode)

目录 1. 安装IDE 1.1 官方开发的IDE软件 1.2 Config工具下载 1.3 说明&#xff08;需先有SDK&#xff09; 2. 下载SDK 3. VScode环境下编译 3.1 安装插件 3.2 确保本地有交叉编译工具链和CMAKE 3.3 加载本地SDK 3.4 导入例程编译 1. 安装IDE 该处理器编译规则可以MDK…