当前位置:网站首页>JS初识高阶函数和函数柯里化
JS初识高阶函数和函数柯里化
2022-08-02 06:18:00 【讷言丶】
一、高阶函数
基本概念
满足下列条件之一,即为高阶函数
- 一个函数接收的参数也是一个函数。
- 一个函数返回的也是一个函数。
简单示例
给大家一个例子看一下:
以下的fun以及fun1两个函数都可以称为高阶函数。
function fun(callback){
console.log('执行fun函数')
callback()
}
function back(){
console.log('执行back函数')
}
fun(back) //接收一个函数作为参数
function fun1(){
console.log('执行fun函数')
return function back1(){
console.log('执行back函数')
}
}
console.log(fun1()()) //调用该fun1函数时会返回一个函数
看到这里相信大家已经明白了高阶函数是什么了,是不是一个很简单的东西呢。那接下来我们再来看看在我们常用的函数中有哪些函数是高阶函数吧。
常见高阶函数
Promise、定时器(setTimeout、setInterval)、数组方法(map,some…)等等
高阶函数很简单,那接下来我们再看看函数柯里化是什么意思呢?
函数柯里化
基本概念
- 通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数形式。
通过这个概念可能大家还不是太明白,那么老套路了,咱们看看例子就会觉得非常简单了
就像工具人用张三一样,既然是示例工具函数,咱们就用求和吧
//普通函数求和
function sum(x,y,z){
return (x + y + z);
}
console.log(sum(1,2,3)) //这是普通函数求和的方式
//函数柯里化求和
function sum(x){
return(y)=>{
return (z)=>{
return x + y + z
}
}
}
console.log(sum(1)(2)(3)) //通过不断调用返回函数的方式最后统一处理得到的值
看了示例中的函数柯里化,我不知道大家会不会想起来一个函数中常会用得到的一个方法:递归
也是通过不断的调用函数,最后再统一处理返回的函数值。
最后
最后这里我再做一个总结吧:
高阶函数的定义就是看我们函数的接受和返回是不是一个函数,函数柯里化主要看咱们的函数不断的返回调用,说白了就看看函数后面跟的小括号(当然,这种看法仅限于个人,欢迎批评指正),对于递归个人觉得也是属于函数柯里化一个明晃晃的示例。
高阶函数以及函数的初始化可能对于刚入门的新手来说是一个懵懂的概念,甚至会以为是什么高级的东西。但是在稍微有了一些函数基础后再通过看一遍这篇博文,我相信你能很清楚这些东西都是非常简单的。那本次分享就先到这里了,谢谢大家
边栏推荐
- MySQL Advanced - MVCC (ultra-detailed finishing)
- MySql 5.7.38下载安装教程 ,并实现在Navicat操作MySql
- Summer Summary (3)
- Py's mlxtend: a detailed guide to the introduction, installation, and usage of the mlxtend library
- request.getSession(),的故事
- HCIP day 3 experiment
- Nodejs安装教程
- 数据库概论之MySQL表的增删改查2
- MySQL Advanced Statements (1)
- node安装及环境配置
猜你喜欢
MySQL - Multi-table query and case detailed explanation
MySQL 5.7 installation tutorial (full-step, nanny-level tutorial)
(Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints
(部分不懂,笔记整理未完成)【图论】差分约束
Pagoda+FastAdmin 404 Not Found
实验7 MPLS实验
APP专项测试:流量测试
MySQL 23道经典面试吊打面试官
chrome 插件开发指南
optional
随机推荐
(笔记整理未完成)【图论】图的遍历
第06章 索引的数据结构【2.索引及调优篇】【MySQL高级】
Detailed explanation of 9 common reasons for MySQL index failure
交换网络----三种生成树协议
love
Resolving C# non-static field, method or property "islandnum.Program.getIslandCount(int[][], int, int)" requires an object reference
分离轴定理SAT凸多边形精确碰撞检测
MySQL 5.7 安装教程(全步骤、保姆级教程)
Leading the demand and justifying the HR value - the successful launch of the "Human Resource Leading Model HRLM"
推出 Space On-Premises (本地部署版) Beta 版!
HCIP day one
Dataset:机器学习中常用数据集下载链接集合之详细攻略
How the Internet of Things is changing the efficiency of city operations
Connection reset by peer problem analysis
正则表达式的理解学习
Toolbox App 1.25 新功能一览 | 版本更新
APP special test: traffic test
Nodejs installation tutorial
The stock price has repeatedly hit new lows, and the real estate SaaS giant is in trouble. How should Mingyuan Cloud transform and save itself?
.NET Static Code Weaving - Rougamo Release 1.1.0