首页 > 其他分享 >什么是高阶函数

什么是高阶函数

时间:2023-04-13 22:01:05浏览次数:43  
标签:函数 什么 调用函数 数组 跳转 array 高阶

原文点此跳转

什么是高阶函数?

有两种情况都可以被定义为高阶函数,第一种是把函数作为参数传递给另外一个函数,第二种是把函数作为另一个函数的返回结果。就像我们平时调用函数,一般都是传递值类型或者对象和数组等参数,或者是函数返回结果是值类型或者是对象和数组,高阶函数就是把上面提到的值类型、对象、数组改为函数。

优点

函数作为参数,可以使我们这个函数变得更灵活

使用高阶函数的意义

  • 抽象(封装)可以帮我们屏蔽细节,只需要关注与我们要实现的目标
  • 高阶函数是用来抽象通用的问题
  • 可以简化我们的代码

ES5、ES6 中常用的高阶函数

  • forEach
  • map
  • filter
  • every
  • some
  • find
  • findIndex
  • reduce
  • sort

基础案例

面向对象方式

const array = [1, 2, 3, 4]

for (let i = 0; i < array.length; i++) {
    console.log(array[i])
}


高阶函数方式

// 抽象循环功能
function forEach(array, fn) {
    for (let i = 0; i < array.length; i++) {
        fn(array[i])
    }
}

// 定义数据
const arr = [1, 3, 4, 7, 8]

// 调用函数,传入函数作为参数
forEach(arr, (item) => {
    console.log(item)
})

原文点此跳转

标签:函数,什么,调用函数,数组,跳转,array,高阶
From: https://blog.51cto.com/u_12639291/6188432

相关文章

  • js中一个移除对象中子数组中空值的函数
    js中一个移除对象中子集数组中空值(null,undefined)的函数functionremoveNull(obj){letdelarr=[];for(letiinobj){//排除法寻找对象类型if(typeof(obj[i])==='boolean'||typeof(obj[i])==='string'||typeof(obj[i])==......
  • HDU 1452 Happy 2004 (积性函数)
    题目地址:HDU1452性质1:如果gcd(a,b)=1则S(a*b)=S(a)*S(b)2004^X=4^X*3^X*167^XS(2004^X)=S(2^(2X))*S(3^X)*S(167^X)性质2:如果p是素数则S(p^X)=1+p+p^2+…+p^X=(p^(X+1)-1)/(p-1)因此:S(2004^X)=(2^(2X+1)-1)*(3^(X+1)-1)/2*(167^(X+1)-1)/166......
  • light oj 1007 Mathematically Hard (欧拉函数)
    题目地址:lightoj1007第一发欧拉函数。欧拉函数重要性质:设a为N的质因数,若(N%a==0&&(N/a)%a==0)则有E(N)=E(N/a)*a;若(N%a==0&&(N/a)%a!=0)则有:E(N)=E(N/a)*(a-1)对于这题来说,首先卡MLE。。只能开一个数组。。所以把前缀和也存到......
  • 为什么 SQLite 一定要用 C 语言来开发?
    SQLite是一种专门为在Unix和类Unix操作系统上运行的Linux服务器应用程序而设计的数据库管理系统,是一种轻量级的关系型数据库管理系统,它适用于许多嵌入式设备和物联网设备。它使用C语言编写,并且是一个开源项目。简单易用:SQLite的语法简单易懂,不需要专业的编程知识,因此适......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 10.控制台变量的用法 & 静态函数库 &
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本文对应Lecture15,61-ConsoleVariablesfordebuggingandgamebalancing。本文将会教你如何在C++中编辑控制台变量的逻辑,通过在游戏中打开控制台,以修改控制台变量的方式来修改游戏里的各种参数;此外,还会使用自......
  • 观察基类与派生类中成员函数的调用
    一、问题描述。用对象和指针来观察基类与派生类中成员函数的调用。二、设计思路。1、定义一个拥有fn1,fn2两个成员函数的基类BaseClass2、由基类BaseClass派生出一个同样拥有fn1,fn2两个成员函数的派生类DerivedClass3、在主函数中声明一个派生类的对象,及基类与派生类的指针4......
  • 函数调用栈学习
    栈:在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最......
  • 报错信息如下:出现身份验证错误。要求的函数不受支持。可能是由于CredSSP加密数据库修
    微软官方已出补丁包:CVE-2018-0886的CredSSP更新WindowsServer2016,alleditions、WindowsServer2012R2Standard、WindowsServer2012Standard、Windows8.1、Windows10、Windows7这是由于凭据安全支持提供程序协议(CredSSP)是处理加密Oracle修正所导致。(详细......
  • 当 Amazon Lambda 遇上 Apache APISIX 可以擦出什么火花?
    本文首先介绍了什么是Serverless,以及为什么需要Serverless;其次,讲述了一个好的网关在Serverless架构下的重要性,而APISIX就是这样的一个网关;最后,本文重点介绍了APISIX中的Serverless类型的插件aws-lambda,同时列举了ApacheAPISIX其它Serverless相关插件。作者程小......
  • FAQ的作用是什么?如何搭建FAQ系统?
    FAQ是什么?FAQ是FrequentlyAskedQuestions的缩写,即常见问题解答,通常来说是指产品的说明或使用帮助。据研究表明,客服支持每天不得不花两个小时去回复客户的重复性问题,上班族一年要花费上百个小时去查阅资料,而一份合格的FAQ文档能够解决至少80%的常见问题。因此,想要让产品脱颖而出,FA......