javascript - `var MyConstructor = function MyConstructor()` 有什么作用?

原文 标签 javascript node.js coffeescript yeoman

有什么区别:

var NodestrapGenerator = module.exports = function NodestrapGenerator() {
  yeoman.generators.Base.apply(this, arguments);
  // more code here
};

和:

var NodestrapGenerator = module.exports = function() {
  yeoman.generators.Base.apply(this, arguments);
  // more code here
};

我正在尝试用 CoffeeScript 编写我的 yeoman-generator 的 index.js,但显然第二个片段不一样,因为它不起作用!谢谢!

最佳答案

var NodestrapGenerator = module.exports = function NodestrapGenerator() { ... };

这是一个名为“NodestrapGenerator”的命名函数,分配给变量 NodestrapGenerator .
var NodestrapGenerator = module.exports = function() { ... };

这是一个未命名的函数,又名。匿名函数,分配给变量 NodestrapGenerator .

最后,它们都引用了相同的函数,因此您编写它的方式没有区别。

更多解释见:var functionName = function() {} vs function functionName() {}

至于为什么它不起作用,可能是因为代码正在寻找命名函数NodestrapGenerator验证它是它应该使用的函数,而不是一些随机的匿名函数。

仅供引用,function有房产name这将被设置为 "NodestrapGenerator"在命名函数中(第一个示例),但将为空字符串 ""在匿名函数中(第二个例子)。 (见 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/name)

关于javascript - `var MyConstructor = function MyConstructor()` 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322807/

相关文章:

javascript - 在第二次命中时,nodejs导出的变量不可重用

javascript - 如何判断是在浏览器中运行还是在 NodeJS 中运行?

javascript - 如何在 Node sequelize.js 中的 FROM SQL 中执行子查询

javascript - 强制迭代Coffeescript中的循环

javascript - 在 coffeescript 类中的范围

javascript - 输入允许数字和单个逗号

Javascript按钮单击无效

javascript - 使用 CordovFile 依赖项创建嵌套文件夹

sql-server - 从Node和SQL Server Management Studio中存储过程执行时间的巨大差异

javascript - 使用 javascript (coffeescript/rails) 提交 2 个不同的表单,第二个取决于第一个中保存的信息