Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >JavaScript回调函数

JavaScript回调函数

作者头像
奋飛
发布于 2019-08-15 02:18:05
发布于 2019-08-15 02:18:05
2.3K00
代码可运行
举报
文章被收录于专栏:Super 前端Super 前端
运行总次数:0
代码可运行

JavaScript API里这样解释:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. (回调是一个函数作为参数传递给另一个函数,其母函数完成后执行。) 使用回调函数的原因:可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。

一、使用函数处理数组

求数组的平均值 方法一(常规方式):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var data = [1,1,3,5,5];
var sum = 0;
for(var i=0; i<data.length; i++){
	sum += data[i];
}
console.log(sum / data.length);

方法二(函数式):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var data = [1,1,3,5,5];
var sum = function(x,y){return x+y;};
console.log(data.reduce(sum)/data.length);

PS:对数组中的所有元素调用指定的回调函数;返回值为通过最后一次调用回调函数获得的累积结果。 array1.reduce(callbackfn[, initialValue]) 如果提供了 initialValue,则 reduce 方法会对数组中的每个元素调用一次 callbackfn 函数(按升序索引顺序)。 如果未提供 initialValue,则 reduce 方法会对从第二个元素开始的每个元素调用 callbackfn 函数。 回调函数的返回值在下一次调用回调函数时作为 previousValue 参数提供。 最后一次调用回调函数获得的返回值为 reduce 方法的返回值。 var data = [1,2,3]; data.reduce(function(x,y){return x+y},2); //8 data.reduce(function(x,y){return x+y}); //6

二、回调函数

示例:数据源为某学生分数,当score<=0由底层处理,当score>0由高层处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 回调函数 */
function f(score,callback1,callback2){
	if(score <= 0){
		console.log("调用底层处理函数")
		/* 使用call函数传参数 */
		callback1.call(this,score);
	}else{
		console.log("调用高层处理函数");
		/* 使用apply函数传参数 */
		callback2.apply(this,[score]);
	}
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 底层函数 */
function subprocess(score){
	score === 0 ? console.log("该学生未参加考试!") : console.log("输入错误!");
}
/* 高层函数 */
function supprocess(score){
	if(score >= 90){
		console.log("该学生成绩优秀!");
	}else if(score >= 80) {
		console.log("该学生成绩良好!");
	}else if(score >= 60){
		console.log("该学生成绩及格!");
	}else{
		console.log("该学生成绩不及格!");
	}
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 匿名函数 */
var score = 99;
f(score,function(){
	score === 0 ? console.log("该学生未参加考试!") : console.log("输入错误!");
},function(){
	if(score >= 90){
		console.log("该学生成绩优秀!");
	}else if(score >= 80) {
		console.log("该学生成绩良好!");
	}else if(score >= 60){
		console.log("该学生成绩及格!");
	}else{
		console.log("该学生成绩不及格!");
	}
})

三、高阶函数

所谓高阶函数就是操作函数的函数,它接收一个或多个函数作为参数,并返回一个新的函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 高阶函数,返回f的返回值的逻辑非 */
function not(f){
	return function(){
		var result = f.apply(this,arguments);
		return !result;
	};
}
/* 判断x是否为偶数的函数 */
var even = function(x){
	return x % 2 === 0;
};

var odd = not(even);	//一个新函数,所做的事情和even()相反
[1,1,3,5,5].every(odd); //true,每个元素都是奇数
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年06月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javascript reduce
reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。
chuchur
2022/10/25
4950
JavaScript回调函数
JavaScript的回调函数大概是JavaScript中使用最广泛的函数编程技术了,我们几乎可以在任何脚本中看到它的身影。
wade
2020/04/23
1.6K0
JS数组reduce()方法详解及高级技巧
reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
kif
2023/02/27
6890
高阶函数详解与实战训练
当大家看到这个面试题的时候,能否在第一时间想到使用高阶函数实现?想到在实际项目开发过程中,用到哪些高级函数?有没有想过自己创造一个高阶函数呢?开始本篇文章的学习
前端迷
2019/08/15
7030
【JS必知必会】高阶函数详解与实战
当大家看到这个面试题的时候,能否在第一时间想到使用高阶函数实现?想到在实际项目开发过程中,用到哪些高级函数?有没有想过自己创造一个高阶函数呢?开始本篇文章的学习
coder_koala
2019/07/30
7780
es 5 数组reduce方法记忆
reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。 概念:对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。 语法: array1.reduce(callbackfn[, initialValue]) 参数: 参数 定义 array1 必需。一个数组对象。 callbackfn 必需。一个接受最多四个参数的函数。对于数组中的每个元
蓓蕾心晴
2018/04/12
1.2K0
JavaScript中Array数组的几种方法
涉及到数组的问题,以前基本上我们都是采用for循环的方法来进行遍历,后来在ES5中新增了几种方法来方便我们遍历。这几种方法分别为:forEach(js v1.6) ,map(js V1.6),filter (js v1.6),some(js V1.6),every(js V1.6),indexOf(js V1.6),lastIndexOf(js V1.6),reduce(js V1.8),rceRight(js V1.8)。
OECOM
2020/07/01
1.1K0
有关JavaScript中回调函数的所有内容!
最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。
前端小智@大迁世界
2021/01/18
2.2K0
13个JavaScript数组reduce的实例方法
对比map、 forEach、 filter 等数组方法,reduce比它们更强。
前端达人
2021/05/11
7660
JavaScript——数组
var colors = ["orange", "blue", "1", 2, 3]; //删除 colors.splice(0, 1); console.log("删除:" + colors.toString());//删除:blue,1,2,3 //插入 colors.splice(1, 0, "a", "b", "c"); console.log("插入:" + colors.toString());//插入:blue,a,b,c,1,2,3 //替换 colors.splice(7, 0, "d").toString() console.log("替换:" + colors.toString());//替换:blue,a,b,c,1,2,3,d
喝茶去
2019/04/16
9660
javascript常用技巧
map() (映射)方法最后生成一个新数组,不改变原始数组的值。其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
前端_AWhile
2019/09/16
7590
一文带你了解JavaScript 函数式编程
函数式编程在前端已经成为了一个非常热门的话题。在最近几年里,我们看到非常多的应用程序代码库里大量使用着函数式编程思想。
心莱科技雪雁
2019/08/23
1.1K0
一文带你了解JavaScript 函数式编程
一文带你了解JavaScript函数式编程?
函数式编程在前端已经成为了一个非常热门的话题。在最近几年里,我们看到非常多的应用程序代码库里大量使用着函数式编程思想。
猿哥
2019/08/09
5750
一文带你了解JavaScript函数式编程?
JavaScript专项算法题(1):回调和高阶函数
题解: // Challenge 1 function addTwo(num) { return num + 2; }
卢衍飞
2023/02/14
3820
Javascript Array常见方法说明
不嫌弃包的大小的话,可以使用underscorejs 或者 lodash 更加好用。。。。
javascript.shop
2019/09/05
7920
Javascript Array常见方法说明
JavaScript进阶之路系列(一): 高阶函数
看了这篇文章,你就会高阶函数了,是不是听起来很牛?高阶函数,听起来很高级,其实是很接地气,大家经常会用到的东西,比如filter,map,回调函数。
刘亦枫
2020/04/09
8510
13个有趣的JavaScript原生数组函数
来源 | http://www.fly63.com/article/detial/9098?type=2 在JavaScript中,创建数组可以使用Array构造函数,或者使用数组直接量[],后者是首
前端达人
2021/05/11
5720
JavaScript-回调函数
In computer programming, a callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time
小小工匠
2021/08/16
9350
ES6特性总结
ECMAScript6.0(以下简称ES6,ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是EuropeanComputerManufacturersAssociation)通过ECMA-262标准化的脚本程序设计语言)是JavaScript语言的下一代标准,已经在2015年6月正式发布了,并且从ECMAScript6开始,开始采用年号来做版本。即ECMAScript2015,就是ECMAScript6。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。每年一个新版本。
后端码匠
2021/02/20
2.1K0
最全的JavaScript常见的操作数组的函数方法宝典
JavaScript在其内部封装了一个Array对象,使得我们可以方便地使用数组这种简单的数据结构,同时,也在 Array对象的原型上定义了一些常用并且很有用的操作数组的函数。
前端迷
2020/11/19
7470
相关推荐
javascript reduce
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文