¿有人可以向我解释 JavaScript 中的回调吗?-初学者

¿Someone can explain to me Callback in JavaScript? - beginner

提问人:JAR. 提问时间:12/2/2022 最后编辑:Abito PrakashJAR. 更新时间:12/2/2022 访问量:56

问:

我是这个世界的初学者,我觉得自己有点懒惰。

我在 Udemy 中购买了一门课程,这是示例:

function add( a, b, cb) {
    const r = a + b 
    cb(r)
}

function callback(result) {
    console.log('This is the result', result);
}

add(2, 3, callback)

这是我不明白的部分: CB(R)的 - ¿为什么“cb”在我的代码的那部分(add(a,b,cb))中,稍后再重复? 我们把 const r 的结果保存在 Cb(r) 中,但我不知道为什么在这两部分中

¿为什么当我在终端中运行它时,它首先出现回调函数并添加函数?

如果有人可以一步一步地向我解释这里发生的事情,我将不胜感激

我只是想知道这是如何工作的,因为它听起来在这条路上很重要,它运行但我不知道为什么

JavaScript 数组函数 对象 回调

评论

0赞 Teemu 12/2/2022
该示例似乎介绍了如何将函数引用 () 作为参数传递给另一个函数,然后调用传递的函数。如果您使用另一个声明的函数扩展该示例,并调用 ,您将了解如何使用此模式。它还可以在 之外单独调用已声明的函数。callbackadd(2, 3, anotherCallback)add

答:

1赞 Emilien 12/2/2022 #1

编写函数添加函数回调的顺序无关紧要。它们只是定义,即关于如何做某事的食谱。但是,除非调用它们,否则仅通过编写函数实际上不会完成任何操作。

通过编写函数 add( a, b, cb),你只需说“我正在编写一个名为 add 的函数,它应该接收 3 个参数作为输入,我将它们命名为 a、b 和 cb。但你还不知道它们的价值是什么。你只是以这种方式命名它们,以便能够用它们做事。当你调用 cb(r) 时,你基本上不知道 cb 是什么,你只知道它是一个稍后要完成的函数。

基本上,你的代码不会按照你编写代码的顺序执行。

Javascript 在读取 add(2, 3, callback) 时开始做事。在这一点上,它明白它需要执行函数 add,你已经给了它三个参数,其中两个是数字,第三个是函数。但它还没有执行函数回调,它只知道它的名字。现在,它只是在函数 add 所在的代码中搜索并首先执行这个代码,使用 a=2、b=3 和 cb=callback

一旦找到它,就会跳转到函数 add 的开头,创建一个新的常量 r 并将 a+b 放入其中。当它看到 Cb(r) 时,它会获取您提交给它的第三个参数,在本例中为函数回调,并使用参数 r 调用它。因此,它再次跳转到函数回调的开头并使用参数 r 执行它。

在此示例中,无需使用回调函数,这只是说明回调概念的基本示例。但正如您帖子的评论中所说,您可能想编写第二个回调函数,例如:

function anotherCallback(result) {
    console.log('This is ANOTHER result', result);
}

然后你可以打电话

add(2, 3, callback)
add(4, 5, anotherCallback)

无需重新编写函数 add。

我试图让它尽可能详细,我希望这是清楚的,但如果没有,请不要犹豫,提出进一步的问题。