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

时间:2016-12-30 10:28:14

标签: javascript function callback

在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

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

感谢。

2 个答案:

答案 0 :(得分:6)

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

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 :(得分:1)

这是标准的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