函数
在看这篇文章之前你应该已经知道,在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在参数列表中,只写函数名就行了!!!
好了,我是萝莉安,这个文章证明了我是笨蛋 (╯ ̄Д ̄)╯╘═╛