高阶函数

优雅而高效的JavaScript——高阶函数 JavaScript是一种高级编程语言,它支持高阶函数。高阶函数是指可以接受一个或多个函数作为参数,或者返回一个函数的函数。在JavaScript中,函数是一等公民,这意味着函数可以像变量一样被传递、赋值和使用。这个特点使得JavaScript非常适合使用高阶函数。在本文中,我们将学习什么是高阶函数,以及如何在JavaScript中使用它们。我们还将探讨高阶函数的一些常见用途,如函数组合、柯里化和延迟执行。最后,我们将介绍一些常见的高阶函数,如map、filter和reduce。 阅读详情

高阶函数是指至少满足下列条件之一的函数。

函数可以作为参数被传递
  1. 回调参数
    在ajax异步请求的应用中,回调函数的使用非常频繁。当我们想在ajax请求返回之后做一些事情,但又并不知道请求返回的确切时间时,最常见的方案就是把callback函数当作参数传入发起ajax请求的方法中,待请求完成之后执行callback函数:
var getUserInfo = function(userId, callback){
	$.ajax('http://xxx.com/getUserInfo?' + userId, function(data){
		if(typeof callback === 'function'){
			callback(data);
		}
	});
}
getUserInfo(13157, function(data){
	alert(data.userName);
});

回调函数的应用不仅只在异步请求中,当一个函数不适合执行一些请求时,我们也可以把这些请求封装成一个函数,并把它作为参数传递给另外一个函数,“委托”给另外一个函数来执行。
比如我们想在页面创建100个div节点,然后把这些节点都设置为隐藏。

var appendDiv = function(){
	for(var i = 0; i < 100; i++){
		var div = doucment.createElement('div');
		div.innerHTML = i;
		document.body.appendChild(div);
		div.style.display = 'none';
	}
};
appendDiv();
//更好的处理方式
var appendDiv = function(){
	for(var i = 0; i < 100; i++){
		var div = document.createElement('div');
		div.innerHTML = i;
		document.body.appendChild(div);
		if(typeof callback === 'function'){
			callback(div);
		}
	}
};
appendDiv(functon(node){
	node.style.display = 'none';
});
  1. Array.prototype.sort
    Array.protoype.sort接收一个函数当参数,这个函数里面封装了数组元素的排序规则。目的是对数组进行排序,这是不变的部分;而使用什么规则去排序,则是可变的部分。把可变的部分封装在函数参数里,动态传入Array.prototype.sort
[1,4,3].sort(function(a,b){
	return a- b;
});//[1,3,4]
[1,4,3].sort(function(a,b){
	return b - a;
});//[4,3,1]
函数可以作为返回值输出
  1. 判断数据的类型
var isString = function(obj){
	return Object.prototype.toString.call(obj) === '[object String]';
};
var isArray = function(obj){
	return Object.prototype.toString.call(obj) === '[object Array]';
};
var isNumber = function(){
	return Object.protype.toString.call(obj) === '[object Number]';
};
// 改进
var isType = function(type){
	return function(obj){
		return Object.prototype.toString.call(obj) === '[object ' + type + ']';
	}
};
var isString = isType('String');
var isArray = isType('Array');
var isNumber = isType('Number');
console.log(isArray([1,2,3]));
//使用循环语句来批量注册这些isType函数
var Type = {};
for(var i = 0,type;type = ['String','Array','Number'][i++];){
	(function(type){
		Type['is' + type] = function(obj){
			return Object.prototype.toString.call(obj) === '[object ' + type + ']';
		}
	})(type)
};
Type.isArray([]);//true
Type.isString('str');//true
  1. getSingle
var getSingle = function(fn){
	var ret;
	return function(){
		return ret || (ret = fn.apply(this, arguments));
	};
};
//既把函数当作参数传递,又让函数执行后返回了另外一个函数。
var getScript = getSingle(function(){
	return document.createElement('script');
});
var script1 = getScript();
var script2 = getScript();
alert(script1 === script2);//true
高效Python必备之高阶函数 Python 高阶函数详解 阅读详情

相关推荐

【脚本篇】---spyglass lint脚本

【代码】【脚本篇】---spyglass lint脚本。

冬瓜 6355

【js进阶】-函数柯里化

一、高阶函数 在正式聊函数柯里化之前,我这里给大家补充下高阶函数的概念和应用: 1.1、什么是高阶函数? 高阶函数英文叫 Higher-order function,它的定义很简单,就是至少满足下列一个条件的函数: 接受一个或多个函数作为输入 输出一个函数 也就是说高阶函数是对其他函数进行操作的函数,可以将它们作为参数传递,或者是返回它们。 简单来说,高阶函数是一个接收函数作为参数传递或者将函数作为返回值输出的函数。 1.2、高阶函数例子 其实平时开发中经常会用到高阶函数,只是之前你不清楚其概念而已,来

Ronychen的博客 1368

别再乱调了!Zygo MetroPro软件滤波功能保姆级指南,从均值到鲁棒高斯样条一次讲清

本文深入解析Zygo MetroPro软件的滤波功能,从均值滤波到鲁棒高斯样条等九种算法,帮助用户根据测量对象特性选择最佳滤波组合。通过真实工业案例和参数配置指南,提升光学测量数据的准确性和效率,特别适用于硅晶圆、光学镜片等精密测量场景。

weixin_30888413的博客 156

什么是高阶函数?举例说明

把函数作为参数传入,这样的函数称为高阶函数, 函数式编程就是指这种高度抽象的编程范式。 也就是说:JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。 eg: 一个最简单的高阶函数:  function add(x, y, f) { return f(x) + f(y); } //当调用add(-5, 6, Math.abs)时,参数x,y和f分别接收-5,6和函数Math.abs,根据函数定义,可以推

lzfengquan的博客 4556

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 604

老司机避坑指南:UC3842自举驱动电路发热严重?这样选C39/C37电容值最稳

本文针对UC3842自举驱动电路发热严重的问题,深入剖析了驱动波形边沿速度与损耗的矛盾根源。通过实测数据与热成像分析,重点阐述了关键电容C39/C37的选型策略,提供了从经验公式到量化计算的优化方法,帮助工程师在发热与效率间找到最佳平衡点,并探讨了分立方案与专用驱动IC的适用场景。

lambda的博客 747

什么是高阶函数?

高阶函数 变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。 def get_abs(n): if n < 0 : n = int(str(n).strip("-")) return n def add(x,y,f): return f(x) + f(y) res = add(3,-6,get_...

weixin_45559675的博客 5416

ORB-SLAM3单目+IMU实战:从数据加载到位姿优化的完整流程解析

本文详细解析了ORB-SLAM3单目+IMU模式的完整实战流程。从EuRoC等数据集的数据格式准备、系统启动与数据流入口,到帧构建、IMU预积分、视觉-惯性联合初始化,再到基于运动模型的跟踪、局部地图优化及多线程协同,提供了从环境配置到代码解读的全面指南,并分享了参数调优与性能分析的实用调试经验。

weixin_29085151的博客 296

【js】高阶函数是个什么?

原创: 海瑞菌 所谓高阶函数,就是函数中可以传入另一个函数作为参数的函数。 简单一张图,方便理解全文。 所谓高阶函数,就是函数中可以传入另一个函数作为参数的函数。 简单一张图,方便理解全文。 其实高阶函数用的很多。其实平时也用,只是以前并不知道那叫高阶函数。 js函数可以传入变量,而函数也是一个变量,自然也是可以传递的。 如: map:一般用于操作数组集合,遍历操作用。 使用map(Str...

web前端Talk的博客 1万+

【开源】基于TI ADS1299与ESP32的8通道脑电采集设备YuEEG全解析

本文详细解析了基于TI ADS1299芯片与ESP32主控的开源8通道脑电采集设备YuEEG。内容涵盖硬件设计、固件驱动开发及Python上位机软件实现,提供了从电路连接、SPI通信配置到数据读取与实时波形显示的全套教程。该项目为学习脑机接口(BCI)与高精度生物电信号采集提供了完整的开源解决方案,适合创客、学生及嵌入式开发者实践。

weixin_42576410的博客 1243

点到面点云配准(Point To Plane)算法知识详解和详细推导,C++代码实现

点到面 ICP (Iterative Closest Point) 是在 3D 点云配准中常见的一种变体,通过最小化点到对应面(由法向量定义的局部平面)的距离来提高收敛速度和精度。

qq_36812406的博客 1809

【NodeJS】高阶函数是什么鬼??

我们都知道Node也“站在巨人的肩上”。这个“巨人”是大名鼎鼎的 V8 引擎,有这样一个强大的“心脏”,再配合基于高阶函数和闭包的异步编码范式,使得用 Node 构建的程序在性能上有着出色的表现。高阶函数为什么会用到高阶函数?粗糙的说,就是为了闭包!  高阶函数与闭包是两个联系非常紧密的概念。如果一个函数以一个或多个函数作为参数,或者返回一个函数,那么称此函数为高阶函数。Node中大部分的异步函数,

'Ablaze 的专栏 768

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 610

深入了解 Kotlin 高阶函数

在 Kotlin 中,高阶函数是一个重要的概念,它极大地增强了语言的灵活性和表达能力。高阶函数允许将函数作为参数传递或返回,从而使得代码更加简洁和易于维护。本文将介绍 Kotlin 的高阶函数,包括基本概念、常用函数及其应用示例。高阶函数是指满足以下任一条件的函数:1、接收一个或多个函数作为参数。2、返回一个函数。这种特性使得 Kotlin 在处理集合、异步编程和事件处理等方面具有很大的优势。println(operation(5, 3, ::add)) // 输出: 8。

weixin_44780781的博客 2441

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

前端进阶:设计高阶函数

本章内容:1. 知道什么是高阶函数2. 知道高阶函数在什么场景下用3. 能够设计合理的高阶函数

海风依旧 1965

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Kotlin之高阶函数

高阶函数和Lambda的关系密不可分。在Lambda编程的基础知识,使用的一些与集合相关的函数式API用法,如map、filter函数等。又比如Kotlin的标准函数,如run、apply函数等,这几个函数都有一个共同的特点:他们都会传入一个Lambda表达式作为参数。像这种接收Lambda参数的函数就可以称为具有函数式编程风格的API,而如果你想定义自己的函数式API,那就需要借助高阶函数来实现了。 高阶函数的定义:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数

ChenYiRan123456的博客 8125

【Python】—— 高阶函数

高阶函数详解

m0_56069910的博客 1856

JS中常见的几种高阶函数

1、什么是高阶函数?   高阶函数英文叫Higher-order function。JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。 举个最简单的高阶函数 function add(x, y, f) { return f(x) + f(y); } //当调用add(-5, 6, Math.abs)时,参数x,y和f分别接收-5,6和函数Math.abs,根据函数定义,可以推导计算过程为:

42384718的博客 1万+

golang之高阶函数

golang之高阶函数怎么写一个golang高阶函数 怎么写一个golang高阶函数 首先高阶函数也是函数,相对于普通函数还是有点区别的,区别点在于:这个函数的形参列表或返回参数列表中存在数据类型为函数类型,这就是高阶函数。看下列代码: package main import "fmt" type F func(int int) int func main() { var f F f =...

RenXiang_Code的博客 2316

Python入门10:高阶函数

高阶函数是指接受函数作为参数或者返回函数作为结果的函数。它在函数式编程中是一个重要概念(函数式编程(Functional ProgrammingFP)是一 种编程范式,它将计算视为数学函的求值,并且避免使用可变数据结构和 改变状态的操作。函数式编程的核心思想是将函数作为程序的基本构建块, 强调不可变性和纯函数的使用)。

m0_74488469的博客 2055

函数式编程入门——高阶函数

摘要: 高阶函数(HOF)是函数式编程的核心工具,通过将函数作为参数或返回值,实现代码复用与逻辑抽象。本文探讨了HOF的定义、原理和实践价值,包括行为抽象、控制流封装和函数组合。文章分析了常见模式(如迭代器、工厂函数)及其底层机制(闭包、柯里化),并对比了JavaScript、Python等语言的实现差异。同时指出性能陷阱与优化策略,强调HOF在提升代码可维护性和表达力方面的长期价值。

技术分享 1430

python中的高阶函数的定义及内置高阶函数

高阶函数介绍 普通函数中的参数是一种数据类型,比如列表,字符串,整型 高阶函数的实参是一个函数名,函数的返回值是一个函数。 例如在python中有一个函数是 abs 用来求整型的绝对值: 函数可以复制成一个变量。 def fun(x,y,f): return f(x),f(y) print(fun(-10,34,abs)) # f = abs 几个内置高阶函数 ma...

thermal_life的博客 1759

Scala的高阶函数

reduce接受两个参数返回一个参数,例如对数组中的所有元素求和,通过调用reduce来实现(1,2,4,3).reduce((x,y)=>(x+y)通过把集合中的第一个元素赋值给x,第二个元素赋值给y,即x=1, y=2,并对这两个值求和。对不变序列的每个元素执行指定的二元规约操作。如果传递的函数的返回值为真,将保留元素中的值,如果为假则过滤元素。假设定义一个数组Arr(1,2,3),通过数组调用map,即Arr(1,2,3).map(x=>x+1),返回值会形成一个新的数组Array(2,3,4)。

2301_82118291的博客 1011

React 中使用高阶函数

在 React 中,高阶函数是一个函数,它接收一个组件作为参数,并返回一个新的组件。

chen520的博客 2615

python高阶函数 —— 内置高阶函数、返回值为函数、函数作为参数、闭包

文章目录一、什么是高阶函数?二、 python 内置高阶函数:map、filter、reduce、sort、sorted2.1、 filter() 过滤出符合条件的元素2.2、 map() 对所有元素做指定的操作2.3、 reduce() 合并2.4、 sort() 排序2.5、 sorted() 排序三、 闭包——也是高阶函数3.1、 形成闭包的必要条件 一、什么是高阶函数? 高阶函数:一个函...

猎人在吃肉 1260

【kotlin】高阶函数详解

如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数 这就涉及到另一个概念了:函数类型。下面学习一下如何定义一个函数类型

Errol's Blog 4345
上一篇: 闭包的更多作用
下一篇: 跨域资源共享CORS
DoubleSRZee
博客等级 码龄10年 7粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值