2

有什么区别:

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
};

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

4

1 回答 1

4
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

于 2013-05-01T17:12:02.407 回答