我对回调函数有准确的理解吗?

Do I have an accurate understanding of callback functions?

本文关键字:回调 函数      更新时间:2023-09-26

我做Javascript修理工已经有一段时间了,最近我一直在努力更好地理解我写的代码。我想要真正擅长编写Javascript。其中一件让我有点困惑的事情是回调函数的用法。到目前为止,我一直避免使用回调。现在,我想知道我对基本回调如何工作的理解是否准确,我对参数和参数的理解是否准确,最后,在这个场景中使用回调的目的是什么。使用下面创建的回调函数有什么好处吗?如果不是,回调函数什么时候最有用?我意识到我在下面写的东西很长,所以对于TLDR人:我认为这是对的吗?就好像我在"myFunction"中创建了函数"callback"?如果是这样,下面的场景有什么好处?为什么不直接调用函数呢?为什么必须调用的函数是一个参数在"myFunction"函数?
如果下面的场景不需要使用回调,那么什么时候需要使用回调?它的好处是什么?谢谢。

我创建了一个工厂函数"myFunction",它有两个参数"x"answers"callback",参数差不多就是变量,当函数被调用时,这些参数将与实参一起存储。我还创建了另一个工厂函数"callback",它有两个参数"x"answers"theValue"。既然这些都是工厂函数,不管它们是在函数调用"myFunction"的下面,它们都将被提升到函数调用的上面,所以没有问题。如果我创建了一个带有变量的函数表达式,它们就不会被提升。所以现在我对"myFunction"的调用有两个参数,其中的参数将被定义为"3"answers"callback"。"callback"参数是一个函数。这个函数有两个参数"x"answers"theValue"。当"myFunction"被调用时,"x"与参数"3"一起存储,"callback"与函数"theCallback"一起存储,然后执行"myFunction"中的代码,这只是一个声明的变量,并分配了一个字符串的值,该字符串包含文本"用于回调"和回调变量(我将其视为变量),这是一个参数,现在是一个参数,是"theCallback"函数,我创建它也包含参数本身,被调用,并给出代码执行的参数。在这种情况下,它将执行的代码调用内置的alert函数(或窗口对象的方法?)并给alert函数一个字符串参数,后面跟着alert函数再次调用,参数为"x",存储为"3",然后再次调用alert,并给定参数为"theValue",其中包含字符串"用于回调"。现在,当"callback"函数作为第二个参数传递给"myFunction"并存储在"callback"中时,就好像我在"myFunction"中创建了"callback"函数,对吗?如果是这样,下面的场景有什么好处?为什么不直接调用一个函数,为什么被调用的函数必须是"myFunction"函数的参数?
如果下面的场景不需要使用回调,那么什么时候需要使用回调?它的好处是什么?
myFunction(3, theCallback);
function myFunction(x, callback){
  var value = 'for the callback';    
  callback(x, value);    
}
function theCallback(x, theValue){
  alert('this is the callback function');
  alert(x);
  alert(theValue);  
}

使用下面创建的回调函数有什么好处吗?

那有点主观。这里不需要使用回调。通常情况下,您会从一个函数返回数据并将其传递给另一个函数。

什么时候回调函数最有用?

当您需要在事件触发后而不是立即处理数据时。例如,当按钮被点击或HTTP响应被触发时。

myButton.addEventListener("click", myCallbackFunction);

我已经创建了一个工厂函数"myFunction"

。这只是一个函数。工厂函数创建类对象。

它们将被吊起

函数声明(与函数表达式相反)被提升。但这与回调无关。回调基本上是一个作为参数传递的函数,它与如何创建无关。

有什么好处

这样做的好处是,当事件触发时,可以根据不同的情况发生不同的事情。

以上面的点击事件为例。通常你会希望点击不同的东西有不同的效果,而不是浏览器供应商硬编码addEventListener来实现的一件事。