是否将 JavaScript 回调函数作为必需参数传递
Is passing a javascript callback function as a parameter required?
到目前为止,在我读到的所有内容中,回调函数都作为参数传递到其他函数中:
function mycallback(){
//dosomething
}
function mainfunc(mycallback){
//do something else
mycallback();
}
mainfunc(mycallback);
正如您所期望的那样工作,很棒。 我的问题是是否需要将回调函数作为参数传递到 mainfunc 中? 似乎如果你省略这个:
function mycallback(){
//dosomething
}
function mainfunc(){
//do something else
mycallback();
}
mainfunc();
它工作正常,并且与第一个示例相同。 但我没有看到人们以这种方式使用回调。 有原因吗? 我错过了什么?
如果您希望单个函数处理所有回调,则第二种方法可以正常工作。
通常,当您调用使用回调的方法时,您希望它在回调中执行不同的内容,具体取决于您调用它的时间和位置。与其在单个回调函数中处理所有不同的情况(然后必须知道它是哪种情况),不如简单地对每种特定情况使用一个回调函数。
回
调最适合在有异步任务时使用。
假设mainfunc
是一个异步操作。
在您的第一个示例中,您向
mainfunc
提供了特定的回调。这使调用方可以灵活地分配操作后要执行的函数。第二个示例,你对回调进行了硬编码。除非您有理由这样做,例如预定的后处理功能,否则这是不灵活的。
从技术上讲,是的,你可以像这样使用你的函数。 将函数作为参数传递的原因与将任何内容作为参数传递的原因相同。
mainfunc(eatSevenBurritos);
mainfunc(eatTwoChimichangas);
在某些情况下,也许你宁愿在通过mainfunc时吃7个墨西哥卷饼。 也许在其他条件下,你宁愿在通过 mainfunc 时吃 2 个 chimichangas。
如果您总是要运行相同的函数,那么如果可以的话,请继续编写代码。 没有必要增加毫无意义的复杂性。 但是,如果需要更改该行为,则需要将其视为参数。
当人们谈论"一等函数"时,这种行为就是他们的意思。 能够将函数视为参数。 因为行为是一种数据类型。
相关文章:
- 函数未将值作为参数传递
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 如何传递函数中的参数
- 将参数传递给函数
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 传递带有参数的函数
- javascript,将参数传递给函数内部的闭包中的回调
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 代码气味-将布尔控制参数传递给函数
- 将参数传递给函数,同时保留事件处理程序
- 如何使用按钮将参数传递给函数
- 作为参数传递时如何计算函数
- 将对象作为参数传递时的 Javascript 函数作用域
- 将回调作为参数传递给函数
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 作为参数传递的函数的异步执行
- 将请求作为参数传递给函数
- 什么时候需要在javascript中的函数中将对象作为参数传递
- Javascript,对象,用参数传递函数作为参数- angular, jquery概念基本误区