【问题标题】:CoffeeScript compiles differentlyCoffeeScript 的编译方式不同
【发布时间】:2013-09-05 01:18:58
【问题描述】:

我在 Ruby on Rails 3.2.13 项目中编写 CoffeeScript,但它似乎编译为不正确的 JavaScript。我的代码是:

$('#a').change () ->
    $('#b').hide()

coffeescript.org 在线编译器将其编译为:

$('#a').change(function() {
  return $('#b').hide();
});

而由于某种原因,当我的项目在开发环境中运行时将其编译为:

(function() {
  $('#a').change(function() {
    return $('#b').hide();
  });

}).call(this);

这背后的原因是什么?它有什么含义吗?

编辑

edovic's answer的扩展中,我找到了how can I use option “--bare” in Rails 3.1 for CoffeeScript的答案

【问题讨论】:

标签: javascript ruby-on-rails coffeescript


【解决方案1】:

它只是将所有内容包装在一个函数中以“屏蔽”它免受全局范围的影响。您可以手动使用 coffeescript 编译器。正常编译,你会得到底部的输出,添加-bare 标志,你会得到顶部的。见Getting rid of CoffeeScript's closure wrapper

【讨论】:

    【解决方案2】:

    就像@edofic 指出的那样,Coffeescript 只是将您的代码包装在一个函数中以使其免受外界影响。

    为了解决这个问题,我只在声明所有全局变量时加上 window 前缀(例如:window.someVar)。这使得它们可以在代码之外访问,也使 Coffeescript 更便携,以便您可以在其他未设置为使用 --bare 选项的机器上编译它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多