为什么JavaScript中回调函数总是作为最后一个参数传递

8
在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

我知道我们可以在任何位置传递它,并且它能够正常工作,但我只是想了解背后的原因。

谢谢。


你为什么认为它在大多数情况下是最后传递的?你能举个例子吗? - Panther
也许是最复杂或不同类型的参数,人们倾向于在最后添加。 - Panther
在异步函数中,尤其是在Node.js中,我们通常使用function(req, res, next){},其中next是回调函数。 - Arpit Kumar
2个回答

10

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

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');
});

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接