首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用RequireJS、Coffeescript和揭秘模块模式

正确使用RequireJS、Coffeescript和揭秘模块模式
EN

Stack Overflow用户
提问于 2012-09-04 22:49:01
回答 1查看 675关注 0票数 1

我在下面定义了一段Coffeescript代码,它使用RequireJS定义了一个函数:

代码语言:javascript
复制
define 'PersonService', ['jquery'] ($) -> 
    getPerson = (id) -> 
        person = dataService.GetPerson id
    { getPerson: getPerson}

它会产生以下结果:

代码语言:javascript
复制
(function() {

  define('PersonService', ['jquery'](function($) {
    var getPerson;
    getPerson = function(id) {
      var person;
      return person = dataService.GetPerson(id);
    };
    return {
      getPerson: getPerson
    };
  }));

}).call(this);

我想我遇到的问题是由Coffeescript代码生成的自执行函数。这会导致我可能没有跟踪到的问题吗?或者这是不是很合适。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-04 22:52:37

这是正确的

没有包装函数和有包装函数的区别在于作用域。

如果您定义了var a= 10;,则在全局范围内,无论是否使用var关键字,a都将成为全局范围。

在包装时,所有变量都是包装函数的局部变量,因此不要成为全局变量。

在你的例子中,所有的东西都已经包装在一个函数中了,所以你不需要额外的包装!

您可以使用以下命令告诉coffee script不要添加包装器函数

代码语言:javascript
复制
coffee -b, --bare         compile without a top-level function wrapper

IMHO:最好总是使用包装器函数,这样就不需要逐个文件地考虑它了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12266047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档