我在下面定义了一段Coffeescript代码,它使用RequireJS定义了一个函数:
define 'PersonService', ['jquery'] ($) ->
getPerson = (id) ->
person = dataService.GetPerson id
{ getPerson: getPerson}它会产生以下结果:
(function() {
define('PersonService', ['jquery'](function($) {
var getPerson;
getPerson = function(id) {
var person;
return person = dataService.GetPerson(id);
};
return {
getPerson: getPerson
};
}));
}).call(this);我想我遇到的问题是由Coffeescript代码生成的自执行函数。这会导致我可能没有跟踪到的问题吗?或者这是不是很合适。
谢谢。
发布于 2012-09-04 22:52:37
这是正确的
没有包装函数和有包装函数的区别在于作用域。
如果您定义了var a= 10;,则在全局范围内,无论是否使用var关键字,a都将成为全局范围。
在包装时,所有变量都是包装函数的局部变量,因此不要成为全局变量。
在你的例子中,所有的东西都已经包装在一个函数中了,所以你不需要额外的包装!
您可以使用以下命令告诉coffee script不要添加包装器函数
coffee -b, --bare compile without a top-level function wrapperIMHO:最好总是使用包装器函数,这样就不需要逐个文件地考虑它了。
https://stackoverflow.com/questions/12266047
复制相似问题