javascript - 命名一个可以匿名的回调函数有什么好处?

标签 javascript sails.js

我注意到 Sails.js 的文档明确命名了看似匿名的回调函数 - 请参阅下面的示例。

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

对比

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

这种方法有什么好处?

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

最佳答案

我能想到的两个原因:

  1. 用于调试(如您所述)。 这为您在调试器的调用堆栈上提供了一个命名函数,而不仅仅是一个未命名的匿名引用。如果有人只是给你一份调用堆栈的副本而你没有在调试器中实时运行它,这将非常有用。如果您在调试器中实时运行它,您始终只需单击调用堆栈的一个元素或查看引用的行号即可了解它的实际功能。
  2. 如果有用或需要,它允许函数从其自己的实现中潜在地调用自己。但是,此名称仅在函数本身内可用,因此不能在其他地方使用,并且不会用另一个名称污染任何本地 namespace (因此保留了匿名函数的好处)。

关于javascript - 命名一个可以匿名的回调函数有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026379/

相关文章:

具有编程样式的 Javascript 可编辑区域

javascript - Sails.js 使用带有 promise 的事务的最佳实践(Postgres)

node.js - 当使用 sails.js 关闭 mongodb 数据库连接时?

javascript - AngularJS:阻止用户访问特定状态

node.js - 使用 SailsJs 时的 301 重定向

javascript - Nativescript - 使用按钮引用访问 'Binding Context'

javascript - 设置 map 缩放以覆盖所有标记;确保以特定标记为中心

javascript - XmlhttpRequest 获取重定向链接?

javascript - 即使我消除了背景图像,jqGrid altRows 也根本没有得到应用

javascript - sails.js - 需要来自同一浏览器的多个 session