CoffeeScript函数编译问题

时间:2014-02-10 14:21:51

标签: javascript coffeescript

我的CoffeeScript如下所示:

myfunctionname = (foo, bar, baz) ->
    alert("I am here")
    return

这应该是在咖啡脚本中声明一个函数的方法。 (根据js2coffee.org和其他人)

这将转换为以下内容:

(function() {
  var myfunctionname;

  myfunctionname = function(foo, bar, baz) {
    alert("I am here");
  };
}).call(this);

问题在于,当我尝试将此js文件包含到视图中并访问我的myfunctionname方法时,它不存在。这可能超出了范围。

因此,CoffeeScript不会为我转换为可用的格式。我需要以下输出格式:

function myfunctionname (foo, bar, baz) {
  alert("I am here");
};

这种格式允许我将功能包含在我需要的地方。

有没有办法在CoffeeScript中实现这一目标?或者我应该考虑完全删除CoffeeScript?

1 个答案:

答案 0 :(得分:1)

Coffee脚本使用匿名函数调用包围所有语句,这是避免污染全局命名空间的一种很好的做法。

如果要避免此行为,可以手动将函数附加到窗口命名空间(DOM中的全局命名空间):

myfunctionname = (foo, bar, baz) ->
    alert("I am here")
    return

window.myfunctionname = myfunctionname

如果您计划使用多个函数,我建议您在窗口中添加一个对象,然后将所有特定的导出函数添加到。

window.MyApp = {}
window.MyApp.myfunctionname = ...