`var MyConstructor = function MyConstructor()`做什么?

时间:2013-05-01 17:04:18

标签: 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,但显然第二个片段不一样,因为它不起作用!谢谢!

1 个答案:

答案 0 :(得分:4)

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

这是一个名为“NodestrapGenerator”的命名函数,分配给变量NodestrapGenerator

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

这是未命名的功能 aka。 匿名函数,它被赋值给变量NodestrapGenerator

最后,他们都引用了相同的功能,所以你编写它的方式没有区别。

有关详细说明,请参阅此处:var functionName = function() {} vs function functionName() {}

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

仅供参考,function有一个属性name,它将在命名函数(第一个示例)中设置为"NodestrapGenerator",但将为空字符串{{ 1}}在匿名函数中(第二个例子)。 (见https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/name