【问题标题】:Why callback is always passed as last parameter JavaScript为什么回调总是作为最后一个参数传递 JavaScript
【发布时间】:2026-01-05 12:05:01
【问题描述】:

在Javascript中,我看到回调函数作为最后一个参数传递我很好奇为什么会这样?这是一个好的做法还是标准的方法?

例如:

var doSomething = function(fname, lname, callback){
  console.log("Your name is :"+ fname +" "+ lname);
  callback();
}

var callback = function(){
  console.log("Your name is printed successfully."):
}

doSomething('Arpit', 'Meena', callback); // callback is last parameter here

我知道我们可以在任何位置通过它并且它有效,但我只是想知道这背后的原因。

谢谢。

【问题讨论】:

  • 是什么让你认为它在大多数情况下是最后通过的。可以举个例子吗
  • 可能是其最复杂或不同类型的论据,人们倾向于最后添加
  • 在异步函数中,主要是在Node js中,我们通常使用function(req, res, next){},其中next是回调函数。

标签: javascript function callback


【解决方案1】:

我这样做并且看到其他人这样做的原因是因为代码可读性,当你有一个回调作为最后一个参数时,你可以声明回调内联而不会使代码不可读。例如,如果您将回调作为第一个参数传递:

var doSomething = function(callback, fname, lname){
  console.log("Your name is :"+ fname +" "+ lname);
  callback();
}

你必须这样称呼它:

doSomething(function callback(){
  console.log('foo');
}, 'Arpit', 'Meena');

但是,如果将它用作最后一个参数,则函数调用会更加清晰:

var doSomething = function(fname, lname, callback){
  console.log("Your name is :"+ fname +" "+ lname);
  callback();
}

doSomething('Arpit', 'Meena', function callback(){
  console.log('foo');
});

【讨论】:

    【解决方案2】:

    这是标准的 JavaScript 约定。它成为标准实践的部分原因是它使事情更具可读性。这就像在类的顶部定义属性 - 您不必这样做,但这是标准做法。

    推荐阅读: http://technosophos.com/2012/08/22/javascript-callbacks-function-last%E2%80%A6-or-lost.html

    http://hancic.info/callback-parameter-should-always-be-last

    【讨论】: