JavaScript回调函数

参考:

https://blog.csdn.net/dawn0718/article/details/122766775

http://www.webkaka.com/tutorial/js/2022/0627190/

https://www.cnblogs.com/moltboy/archive/2013/04/24/3040213.html(未看完)

什么是回调?

把一段可执行的代码(可执行代码A)像参数传递那样传给其他代码,而这段代码(可执行代码A)会在某个时刻被调用执行,就叫做回调。如果代码立即被执行就称为同步回调,如果在之后的某个时间再执行,则称为异步回调。

通俗地理解:

我现在写一个函数,里面定义了函数A,那么函数A就是回调函数。回调函数就是定义了一定要(回来)执行的函数,至于什么时候执行、怎么执行、具体的执行内容是什么,javascript解释器不去理会,到了要执行的时候,把它放到执行队列里就行了。

有以下特点:

1、我们定义的函数(也可以不是我们自己定义的);

2、我们自己没有调用这个函数;

3、最终这个函数被调用执行了。

 

回调函数是JavaScript的精华之一

1、javascript本身只支持单线程,单线程容易造成阻塞;而作为宿主的浏览器是支持多线程的,javascript通过将回调函数放入执行队列的这种执行机制,在浏览器的支持下实现“多线程”。

2、当我们使用.sort()方法对一个数组进行排序时,如果不指定回调函数则默认升序;如果我们希望降序则可以传入一个比较函数作为回调,甚至可以只传入一个函数名称就可以实现,这为程序功能提供了更多的实现。

3、可以等待前一个函数调用的结果,然后执行另一个函数调用。例如setTimeout()中的回调函数。

回调函数可以分为两类:

1、同步的回调函数:它会在主线程上按照执行上下文的顺序立即执行,不会被放入回调队列中随后执行。数组遍历的相关回调函数都属于这种情况。

2、异步的回调函数:它会被放入回调队列中,待主线程执行完毕以后再执行。定时器回调和AJAX回调都属于这种情况。

let arr=[1,2,3,4,5,6, 6]
arr.forEach((item)=>{//数组遍历类的回调函数,会立即执行
   console.log(item);
})
console.log('主线程的代码');//属于主线程的代码,会早于异步回调函数先执行
/* setTimeout(()=>{//是定时器回调函数,所以会被放入回调执行队列 
	console.log('@');
},2000)
console.log('主线程'); */

 

什么叫:内联回调函数?

posted on 2022-04-29 08:52  前端码牛  阅读(33)  评论(0编辑  收藏  举报

导航