我在test.js中有以下Coffeescript

yo () -> console.log("yo")

通过coffee -o public / javascripts / -cw public / coffeescripts /编译时,我得到public / javascripts / test.js:
// Generated by CoffeeScript 1.4.0
(function() {
  var yo;

  yo = function() {
    return console.log('yo');
  };

}).call(this);

我正在尝试以通常的方式在HTML文件中包括以下内容:
<script src="/javascripts/test.js" type="text/javascript"></script>
<script type='text/javascript'>
  //<![CDATA[
  $(function() {
    alert('before yo');
    yo();
    alert('after yo');
  });
  //]]>
</script>

但是,我一直收到“未捕获的引用错误:未定义”。实际使用Coffeescript生成的javascript的过程是什么?

最佳答案

在CoffeeScript文件中,yo是局部变量。它不是全局变量。如果要从另一个JavaScript文件或HTML文件中的JavaScript使用该变量,则需要将yo设置为全局变量。

您可以在CoffeeScript文件中执行以下操作:

yo = -> ...

# either
@yo = yo
# or
window.yo = yo

10-08 13:53