Javascript CoffeeScript中的函数

Javascript CoffeeScript中的函数,javascript,coffeescript,Javascript,Coffeescript,我正在尝试将函数从Javascript转换为CoffeeScript。代码如下: function convert(num1, num2, num3) { return num1 + num2 * num3; } 但我怎么能在《咖啡脚本》中做到这一点呢 我试图从如下HTML源代码运行该函数: <script type="text/javascript" src="../coffee/convert.js"></script> <script type="

我正在尝试将函数从Javascript转换为CoffeeScript。代码如下:

function convert(num1, num2, num3) {
    return num1 + num2 * num3;
}
但我怎么能在《咖啡脚本》中做到这一点呢

我试图从如下HTML源代码运行该函数:

<script type="text/javascript" src="../coffee/convert.js"></script>

<script type="text/javascript">
    convert(6, 3, 10);
</script>
但它不起作用,我得到一个错误,说:ReferenceError:cannotfind variable:convert


如何更正此问题?

您应该查看godfoca今天刚刚发布的这些很棒的幻灯片。您也可以在

convert = (num1, num2, num3) -> num1 + num2 * num3

您需要将convert函数导出到全局范围。 看


@劳伦斯的回答很好

我只想补充一些想法

我宁愿只向window对象添加一个变量,而不是污染全局名称空间

然后,你们可以在全球范围内访问这个应用程序,并在那个里添加你们所有的东西。convert函数现在可以这样表示:

App.convert = convert = (a, b, c) -> a + b * c
然后,在本地范围内调用函数

convert 1,2,3
现在全球范围内

App.convert 1,2,3

在coffeescript文件的顶层,这个aka@应该指向窗口。因此,要将其附加到此处,您可以使用速记:

@convert = (num1, num2, num3) -> num1 + num2 * num3
但是请注意,这会污染全局名称空间。jm发布的解决方案更为谨慎。但是你可以代替

window.App = {}


使用@的好处是它在node.js中引用了全局,因此您可以使用相同的代码在浏览器和服务器端环境中公开您的功能。

认为您在其中有多余的空间:“->”这个答案非常正确。必须强调的是,一旦连接到window,window.convert就可以像convert一样从任何地方访问;但是编写convert=会创建一个名为convert的局部变量scope.Nice lawnsea,今天在从javascript混合调用函数时点击这个。我记得匿名作用域,但忘记了Trevor的建议,将其放在窗口上,使其可在coffeescript的空间之外调用。给出的答案是正确的,但您真正应该做的是将剩余的JS从HTML中取出,并放入外部JS或coffeescript文件中。JS不属于HTML。
convert 1,2,3
App.convert 1,2,3
@convert = (num1, num2, num3) -> num1 + num2 * num3
window.App = {}
@App = {}