首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CoffeeScript中,如何过滤出全局数组而不意外地声明它?

在CoffeeScript中,如何过滤出全局数组而不意外地声明它?
EN

Stack Overflow用户
提问于 2013-06-12 03:25:26
回答 2查看 173关注 0票数 1

我是CoffeeScript的新手,我是读这本书。有一节名为Select,讨论如何使用典型的函数式编程filter函数。上面说你可以这样做:

代码语言:javascript
复制
attacks = (attack for attack in attacks when attack is "a")

目的是过滤掉所有不等于"a“的元素。只要在同一个文件中声明了attacks,它就能正常工作。但是,如果我在另一个文件中声明了attacks,如下所示:

代码语言:javascript
复制
attacks = ["a", "b"]
root = exports ? this
root.attacks = attacks

然后将第一段代码编译如下:

代码语言:javascript
复制
function() {
    var attack, attacks, _i, _len;
    ...

您将在for循环中得到一个错误:

TypeError:攻击未定义

我猜,这是因为CoffeeScript在它不知道的=的左边看到了一些东西,并决定需要声明它。

我怎么才能避免这种情况?

事实上,我已经想出了一个方法。这就是修改第一个片段,这样说:

代码语言:javascript
复制
root.attacks = (attack for attack in attacks when attack is "a")

这是个好办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 06:05:36

如果明确告诉Coffeescript,Coffeescript将使用全局“窗口”。如果我是你,我会犹豫是否开始直接将属性分配给窗口。至少,您可以将它们放在窗口上的一个对象中,比如:window.globals = window.globals ? {},然后是window.globals.attacks = (attack for attack in attacks when attack is "a")。对于更健壮的解决方案,您可以考虑如下所示:

代码语言:javascript
复制
window['moduleName'] = (->
  someOtherVariableToExpose = 'something'
  # All of your code

  attacks: attacks
  anotherThing: someOtherVariableToExpose)()

在javascript中,如下所示:

代码语言:javascript
复制
window['moduleName'] = (function() {
  var someOtherVariableToExpose;
  var attacks;

  someOtherVariableToExpose = 'something';
  attacks = 'whatever your code defined it as';
  return {
    attacks: attacks,
    anotherThing: someOtherVariableToExpose
  };
})();

这在文件的所有私有代码周围创建了一个很好的小闭包,并且只公开了窗口‘’moduleName‘、窗口’‘moduleName’和窗口‘’moduleName‘。

如果您的应用程序变大,您可以查看模块依赖库,如所需褐化

编辑,以确保匿名函数被立即调用,因此返回的对象确实是公开的全部内容。

票数 1
EN

Stack Overflow用户

发布于 2013-06-12 03:47:55

是的,你的解决方案是一个很好的解决方案。如果没有显式地从其他地方提取引用,Coffeescript将为引用创建一个局部变量,因此需要这样做。如果您知道此代码位于节点或浏览器中,则可以更显式地表示window.attacks或要求包含攻击的文件并以这种方式获取它。如果它打算被共享,那么您的解决方案就是一个好的解决方案。

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

https://stackoverflow.com/questions/17057217

复制
相关文章

相似问题

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