您的位置:首页> 前端教程> JS教程
文章导航

JavaScript 回调函数

2018-10-13 23:46| 作者: admin| 查看: 2311| 评论: 0|来自: 蚂蚁部落

回调函数并不是一种新函数,而是函数的一种使用方式。

应用十分广泛,甚至当我们还不知道回调函数这个概念的时候,已经在代码中应用它。

首先看一段代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
function callback(){
  console.log("蚂蚁部落");
}
setTimeout(callback, 2000);

代在两秒之后打印出字符串"蚂蚁部落",callback被用作回调函数。

代码是不是非常的简单,由此可能会导致初学者根本就没有意识正在应用回调函数。

回调函数概念十分简单,很多时候由于"回调函数(callback)"这个貌似高大上的名字产生一些"恐惧感"。

一.回调函数概念:

什么是回调函数,英文文档介绍如下:

[HTML] 纯文本查看 复制代码
A callback is a function that is passed as an argument to 
another function and is executed after its parent function has completed.

翻译成汉语大致意思是,回调函数作为参数传递给另一个函数,当主体函数执行完毕后,再去执行回调函数。

通俗的说,就是一个函数作为参数传递给另一个函数,当某个事件发生后,触发回调函数的执行。

现在对前面的代码做一下分析:

(1).将函数callback作为参数传递给setTimeout函数。

(2).callback执行的时机是setTimeout函数执行后的2秒。

如果再通俗一点,可以从它的名字"回调函数"来理解记忆,回调函数就是先把函数准备好,回头时机到了再调用。

上述理解方式好像有点牵强附会,但是对于理解记忆可能有所帮助。

二.传递的是函数对象:

一定要注意,传递的是函数对象。

代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
function callback(){
  console.log("蚂蚁部落");
}
setTimeout(callback(), 2000);

上述代码中,setTimeout第一个参数传递的不是callback函数对象,而是callback函数的返回值。由于callback的返回值是undefined,自然就会报错。

如果callback函数的返回值是一个函数对象,那么就没什么问题了。

代码修改如下:

[JavaScript] 纯文本查看 复制代码运行代码
function callback(){
  return function(){
    console.log("蚂蚁部落");
  }
}
setTimeout(callback(), 2000);

上述代码依然会在两秒后打印出"蚂蚁部落"。

因为callback返回一个函数对象,所以实质上给setTimeout传递的依然是一个函数对象。

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

最新评论

返回顶部