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 - 如何在 node.js 应用程序 heroku 中访问 .env 文件中的变量

javascript - 更新数组时不会触发模型的更改事件?

jquery - CoffeeScript 在更改和加载时动态选择表单字段

c# - 从 asp.net c# 设置 style.display

javascript - 当选中该按钮时,将类添加到单选按钮的父级(具有特定类)

node.js - 无法使用 stdin 读取输入

mysql - dockerizingexpress.js 应用程序后的 "Unknown column COUNTRY in field list"

javascript - 单击 Webkit 通知时如何从浏览器中的任何其他选项卡返回当前选项卡

javascript - 如何将我的进度条百分比限制为仅 100%

node.js - 为什么我不能使用导入语法从 TypeScript 导入 CoffeeScript 文件