JS什么是回调函数?

简介: JS什么是回调函数?

对于刚学JS的初学者来说(包括我现在的自己),对于这个回调函数真的是踩坑无数,于是乎想作为一个淋过雨的人,想为后面刚入门的人打一把伞。

本文不会用专业的知识词汇,只会用口语来简单让你有一个概念帮你浅浅的理解这个名词,如果你是一个学习JS刚遇到这个名词,正处于一脸懵逼的状态,那么本文对于会有帮助,但如果你想要研究更深层次的原理,用法和含义,可能本文不适合你。

废话不多说,让我们先看MDN的解释。

image.png

这段话,首先我们要搞懂一个东西,什么是实参。

我们都知道,函数可以接受参数,形参和实参。那么什么是形参呢?

image.png

相信大家已经在无数网站看到过无数过这个例子了,计算两个数字的和,但是丝毫不影响它的经典简单易懂。

那么当你在定义这个函数的时候,A,B就是形参。参数可以拿来用,你也可以不用。形   参,形式上的参数,并没有实际意义,只是帮你完成函数内部逻辑运算而设置的。

image.png

那么什么是实参呢?

image.png

还是这段代码,当你调用函数的时候,这个1,2就是实参。

对于刚入门的你可以暂不深究,你可以这样简单的理解。

OK,那么我们回过头来研究我们的标题内容:什么是回调函数。

image.png

说人话就是, 一个函数A,作为另一个函数B的参数,那么函数A就被称为回调函数。

对,回调函数A就是一个普普通通的函数,它被其他函数B作为参数在B的内部调用,那么在这个时候A才能被称为B的回调函数。

回调函数这个概念是相互的,一个单独的函数是无法叫做回调函数的,它只能被称为XXX(被谁在内部调用)的回调函数。我相信大部分人都是迷惑在这里了。我们再举一个栗子。

image.png

我们经常会在教程视频中听到setTimeout函数的解释是这样的,setTImeout接收一个回调函数作为参数........确实这句话对于刚开始学习到这一步的我真的是一脸懵逼,什么是回调函数?我去,之前怎么没遇到过,什么玩意啊?

大家不要忘了setTimeout本身就是一个函数,它就是我们刚刚在上面说的函数B,那么函数A就是这个东西:

image.png

所以这句话正确的语意应该是:setTimeout作为一个函数B,它接收另一个函数A作为它的参数来使用。设计者想了想,这样说好像 太麻烦,于是就把函数A叫做回调函数。(函数A叫做函数B的回调函数!!!)

本人也是初次学习JS,仅代表个人意见,如有错误,还望各位大佬指教,我定虚心改正。




相关文章
|
3月前
|
JavaScript 前端开发 Go
动态加载与异步加载 JavaScript 详解:加载远程js,加载成功后执行回调函数
动态加载与异步加载 JavaScript 详解:加载远程js,加载成功后执行回调函数
533 1
|
3月前
|
JavaScript 前端开发 UED
在 JavaScript 中,异步编程和回调函数是处理非阻塞操作(如网络请求、文件读写等)的重要工具
【5月更文挑战第10天】JavaScript中的异步编程和回调函数用于处理非阻塞操作,提高应用响应性和吞吐量。异步编程通过回调函数、Promises和async/await等方式实现,避免程序因等待操作完成而阻塞。回调函数是异步操作完成后调用的函数,常用于处理网络请求等。然而,回调函数存在嵌套问题和错误处理困难,因此出现了Promises和async/await等更优解决方案。
30 3
|
26天前
|
JavaScript 前端开发 API
Node中的AsyncLocalStorage 使用问题之Node.js将 JavaScript 层的 nativeHooks 注册到 C++ 层的问题如何解决
Node中的AsyncLocalStorage 使用问题之Node.js将 JavaScript 层的 nativeHooks 注册到 C++ 层的问题如何解决
|
2月前
|
存储 前端开发 JavaScript
回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。
【6月更文挑战第27天】回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。它作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,模拟异步操作后,调用`handleResult`传递结果。这样,当异步任务完成时,`handleResult`负责处理结果。
21 1
|
2月前
|
前端开发 JavaScript
JavaScript异步处理避免了单线程阻塞,如回调函数、Promise和async/await。
【6月更文挑战第22天】JavaScript异步处理避免了单线程阻塞,如回调函数、Promise和async/await。回调是基础,用于在操作完成后执行函数;Promise管理异步状态,支持链式调用;async/await提供同步代码外观,简化错误处理。每种技术在处理耗时任务时都起着关键作用。
23 3
|
2月前
|
前端开发 JavaScript 开发者
JavaScript基础-异步编程:回调函数
【6月更文挑战第12天】本文介绍了JavaScript中的异步编程基础,重点讨论回调函数。回调函数是处理延迟操作的关键,常见于事件监听、定时器、Ajax请求和文件操作。然而,它们可能导致回调地狱、错误处理不一致和控制流混乱等问题。为了解决这些问题,文章推荐使用Promise链、async/await来扁平化异步逻辑,并提供了相关代码示例,强调了现代JavaScript特性的优势,以提升代码可读性和可维护性。
|
2月前
|
JavaScript API
Node.js 回调函数
Node.js 回调函数
19 1
|
1月前
|
JavaScript
JS 你可能没用过的【回调函数式替换】replace()
JS 你可能没用过的【回调函数式替换】replace()
20 0
|
2月前
|
前端开发 JavaScript 开发者
JavaScript异步编程艺术:深入浅出回调函数与异步挑战【含代码示例】
本文深入解析JavaScript异步编程,重点探讨回调函数和异步挑战。在单线程的JavaScript中,异步编程至关重要,回调函数是其基础。然而,回调地狱问题催生了Promise和async/await的出现。文章提供代码示例展示Promise和async/await的使用,并分享异步编程最佳实践,包括错误处理、资源管理和性能优化。遇到问题时,建议通过明确异步流程、逐步调试和异常捕获来解决。最后,文章强调异步编程的未来发展,鼓励开发者掌握最新工具并探讨更高效的异步解决方案。
40 2
|
3月前
|
前端开发 JavaScript 开发者
在JavaScript中,回调函数是一种非常强大的工具
【5月更文挑战第10天】JavaScript中的回调函数是异步编程的核心,常用于处理异步操作结果、事件监听、定时任务、数组遍历和转换以及递归调用。例如,`fetchData`函数使用回调处理网络请求的结果,`addEventListener`用于监听事件,`setTimeout`执行延迟任务,`map`则对数组元素进行操作。尽管回调函数可能导致回调地狱和错误处理复杂,但它们依然是理解和掌握JavaScript的关键技能,而Promise和async/await提供了更优的异步解决方案。
26 2

热门文章

最新文章