当前位置:网站首页>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)) //通过不断调用返回函数的方式最后统一处理得到的值
看了示例中的函数柯里化,我不知道大家会不会想起来一个函数中常会用得到的一个方法:递归
也是通过不断的调用函数,最后再统一处理返回的函数值。
最后
最后这里我再做一个总结吧:
高阶函数的定义就是看我们函数的接受和返回是不是一个函数,函数柯里化主要看咱们的函数不断的返回调用,说白了就看看函数后面跟的小括号(当然,这种看法仅限于个人,欢迎批评指正),对于递归个人觉得也是属于函数柯里化一个明晃晃的示例。
高阶函数以及函数的初始化可能对于刚入门的新手来说是一个懵懂的概念,甚至会以为是什么高级的东西。但是在稍微有了一些函数基础后再通过看一遍这篇博文,我相信你能很清楚这些东西都是非常简单的。那本次分享就先到这里了,谢谢大家
边栏推荐
- node安装及环境配置
- Vscode connect to remote server "Acquiring the lock on the/home / ~ 'problem
- 分离轴定理SAT凸多边形精确碰撞检测
- Wuhan 2022 organizing of the high-performance computing added new ecological development of high-performance computing
- Leetcode周赛304
- At age 94, pioneer Turing award winner, computational complexity theory, Juris Hartmanis, died
- 【暑期每日一题】洛谷 P1255 数楼梯
- Toolbox App 1.25 新功能一览 | 版本更新
- DNS resolution process
- Specified URL is not reachable,caused by :‘Read timed out
猜你喜欢

MySQL - Multi-table query and case detailed explanation

Reverse resolve dns server

MySQL 5.7 安装教程(全步骤、保姆级教程)

实例032:反向输出II

ASP.NET Core Web API 幂等性

实验7 MPLS实验

node安装及环境配置
![[npm install error report collection] - npm ERR! code ENOTEMPTY npm ERR! syscall rmdir](/img/c5/2c42e26e577506573985b30669ca6c.png)
[npm install error report collection] - npm ERR! code ENOTEMPTY npm ERR! syscall rmdir

Specified URL is not reachable,caused by :‘Read timed out

Revitalize rural circular economy and digital chain to link agricultural "ecological chain"
随机推荐
APP special test: traffic test
专家见解|经济低迷期把握创新机会的 3 大方法
实例031:字母识词
rhce homework
每周推荐短视频:为什么产品开发需要数字化?如何做到数字化?
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?
Resolving C# non-static field, method or property "islandnum.Program.getIslandCount(int[][], int, int)" requires an object reference
MySQL - 多表查询与案例详解
HCIP 第二天
Launch Space on-premises deployment (local) Beta!
Summer Summary (3)
PHP Warning: putenv() has been disabled for security reasons in phar
Xgboost报错 ValueError: Invalid shape: (1650, 2) for label
GCC编译器技术解析
aTrust项目的相关操作与分享
数据库概论之MySQL表的增删改查1
Dataset: A detailed guide to the download link collection of commonly used datasets in machine learning
Redis 常用命令和基本数据结构(数据类型)
About the local server problem after ue4.27 pixel streaming package
August 2022 plan, focusing on ue4 video tutorials