我的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?
答案 0 :(得分:1)
Coffee脚本使用匿名函数调用包围所有语句,这是避免污染全局命名空间的一种很好的做法。
如果要避免此行为,可以手动将函数附加到窗口命名空间(DOM中的全局命名空间):
myfunctionname = (foo, bar, baz) ->
alert("I am here")
return
window.myfunctionname = myfunctionname
如果您计划使用多个函数,我建议您在窗口中添加一个对象,然后将所有特定的导出函数添加到。
window.MyApp = {}
window.MyApp.myfunctionname = ...