我注意到 Sails.js
的文档明确命名了看似匿名的回调函数 - 请参阅下面的示例。
User.create({ name: 'Jamie' }).exec(function(err, created){
...
});
对比
User.create({ name: 'Jamie' }).exec(function createCB(err, created){
...
});
这种方法有什么好处?
它纯粹是为了帮助调试调用堆栈输出和提高可读性吗?
最佳答案
我能想到的两个原因:
- 用于调试(如您所述)。 这为您在调试器的调用堆栈上提供了一个命名函数,而不仅仅是一个未命名的匿名引用。如果有人只是给你一份调用堆栈的副本而你没有在调试器中实时运行它,这将非常有用。如果您在调试器中实时运行它,您始终只需单击调用堆栈的一个元素或查看引用的行号即可了解它的实际功能。
- 如果有用或需要,它允许函数从其自己的实现中潜在地调用自己。但是,此名称仅在函数本身内可用,因此不能在其他地方使用,并且不会用另一个名称污染任何本地 namespace (因此保留了匿名函数的好处)。
关于javascript - 命名一个可以匿名的回调函数有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026379/