JavaScript 浅析回调函数


函数

在看这篇文章之前你应该已经知道,在JavaScript中什么是函数。如果你不知道什么是函数,那就退出去查一下嗷。(●′ω`●)

JavaScript中如何声明一个函数呢?

现在我先给出一个简单的要求: 写一个函数,能够打印出hello world。
下边我给出三种声明函数的方法。
在这里插入图片描述

函数调用

知道声明函数了,那函数怎么调用呢?
现在我先给出一个简单的要求: 调用一个函数,打印出hello world。
方法一:就是正常的声明一个函数,然后函数名()调用。
在这里插入图片描述
方法二匿名函数自调用
像声明一个变量一样,声明一个函数,这时候你把变量名划掉,那就不知道它是谁了吧,这样就是匿名函数
在这里插入图片描述
匿名函数怎么调用呢?
(๑•̀ㅁ•́ฅ)我称之为跑得了和尚跑不了庙。你函数名没了,那我就把你整个函数体都放到小括号里,然后后边加小括号调用。就是(匿名函数的函数体)()
在这里插入图片描述

回调函数

什么是回调函数?

  • Mozilla社区是这么说的: 被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。
  • 再看一个英文释义: A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。

简单理解: 回调函数就是将一个函数(参数函数) 作为参数传到另一个函数(主函数) 里面,这个参数函数就叫做回调函数。

举个栗子

  • 我声明了一个函数Greeting,它需要接受一个函数作为参数。
    • 我又声明了一个greet函数。
    • Greeting(greet)执行的时候,会调用greeting()在这里插入图片描述
  • 换一种写法:跟上边一样的逻辑
    • 但是我把greet改成了匿名函数。
    • Greeting(匿名函数)执行的时候,会调用匿名函数
      在这里插入图片描述
      这样看会不会清晰一点,很明显看出这是匿名函数了吧。
      在这里插入图片描述

上边这个是举了个同步回调的例子,但是回调函数经常用于执行异步操作,那种被称为异步回调。当然这是后话,感兴趣的自己去查资料。着这里只是浅析回调函数而已。

回调函数的参数

真心发问一句:回调函数的参数是什么?
你肯定会说,不就是一个函数呗。
我以前也觉得很简单的问题……但是我今晚回调函数+settimeout+promise+async乱七八糟混合起来之后我竟然迷惑了。
这里我严肃声明!
回调函数在参数列表中

  • 要么写的是函数名!!!不带括号!!!
  • 要么写的是函数体!!!完整的匿名函数!!!
    回调函数在主函数的函数体中执行
  • 要写函数名()

看看我亲身示范!!!血泪史!!!
在这里插入图片描述
在这里插入图片描述
来来来说一下为什么29-31行和32行等价!

这是两秒钟之后执行这个匿名函数function,也就是执行resolve,因为resolve在函数体里,要执行就得加括号!!!
在这里插入图片描述
这是两秒钟之后执行resolve,resolve在参数列表中,只写函数名就行了!!!


好了,我是萝莉安,这个文章证明了我是笨蛋 (╯ ̄Д ̄)╯╘═╛

发布了131 篇原创文章 · 获赞 451 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/qq_36667170/article/details/105149708