命名回调函数有什么好处,这可能是匿名的?

时间:2016-01-27 00:02:30

标签: javascript sails.js

我注意到Sails.js显式名称的文档,看似可能是匿名的回调函数 - 请参阅下面的示例。

User.create({ name: 'Jamie' }).exec(function(err, created){
    ...
});

VS

User.create({ name: 'Jamie' }).exec(function createCB(err, created){
    ...
});

这种方法有什么好处?

纯粹是为了帮助调试调用堆栈输出和可读性吗?

1 个答案:

答案 0 :(得分:6)

我能想到的两个原因:

  1. 用于调试(如您所述)。 这为调试器中的调用堆栈提供了一个命名函数,而不仅仅是一个未命名的匿名引用。如果有人只给你一个调用堆栈的副本并且你没有在调试器中运行它,那么这是最有用的。如果您在调试器中实时运行它,您可以随时单击调用堆栈的元素或查看引用的行号以查看它实际上是什么函数。
  2. 如果有用或需要,它允许函数从自己的实现中自行调用。但是,此名称仅在函数本身中可用,因此不能在其他地方使用,也不会污染本地名称空间的其他名称(从而保留匿名函数的好处)。