JavaScript回调函数(一)

(一) 什么是回调函数

如果你定义了一个函数,并将其作为参数提供给了另外一个函数的话,那么这就创建了一个回调,这个定义的函数就被称为回调函数,而接受该函数作为参数的函数,我们称之为高阶函数。这句话是不是有些拗口,难以理解,没关系,接下来举例如你理解明白。

首先,我们创建一个吃东西的函数。
只需要创建一个接受something参数的函数eat(something).。这个函数应返回吃东西的信息:

function eat(somethint) {
	return `I like eat ${something}!`;
}

eat('Hamburg'); // => 'I like eat Hamburg!'

如果我喜欢吃很多东西怎么办?可以用map()函数实现:

var foods = ['Hamburg', 'Ice cream'];
var msg = foods.map(eat);
msg; // => ['I like eat Hamburg!', 'I like eat Ice cream!']

foods.map(eat)获取foods数组中的所有元素,并且分别取出数组中的每个元素去调用eat()函数: eat(Hamburg)、eat(Ice cream)

foods.map(eat)方法可以接受eat()函数作为参数。这样eat()就变成了回调函数
foods.map(eat)是用另一个函数作为参数的函数,因此被称为高级函数

当然,我们自己也可编写并使用回调的高阶函数。下面举一个array.map()函数的等效实现方式:

function eat(somethint) {
	return `I like eat ${something}!`;
}

function map(array, callback) {
	var foodsArray = [];
	for(let item of array) {
		foodsArray .push(callback(item));
	}
	return foodsArray;
}

var foods = ['Hamburg', 'Ice cream'];
var msg = map(foods, eat);
msg; // => ['I like eat Hamburg!', 'I like eat Ice cream!']

这里我们自定义的map(array, callback)就是一个高阶函数,因为它用回调函数eat()作为参数,然后在其主题内部调用了该回调函数:callback(item)。


补充:
上述map()高阶函数里面的for()循环,为啥写成了for(let item of array)的形式,而不是传统的for(var i = 0; i < array.length; i++)样子,一方面是为了*B,另一方面能够减少代码的写入量,程序猿应该都喜欢与众不同一点吧。

for(let item in array)与for(let item of array)的简单比较以及使用:

// 在控制台调试
var array = ['Hamburg', 'Ice cream'];
// 输出的是下表
for(let item in array) {
    console.log(item);
}
// 输出结果:0 1

// 输出的是数组元素
for(let item of array) {
    console.log(item);
}
// 输出结果:Hamburg  Ice cream
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值