CoffeeScript中的函数

我试图从Javascript转换到CoffeeScript的function 。 这是代码:

 function convert(num1, num2, num3) { return num1 + num2 * num3; } 

但是,我怎么能在CoffeeScript中做到这一点?


我试图从这样的HTML源代码运行的function:

 <script type="text/javascript" src="../coffee/convert.js"></script> <script type="text/javascript"> convert(6, 3, 10); </script> 

但它不会工作,我得到一个错误说: ReferenceError: Can't find variable: convert

如何纠正这个?

您需要将转换函数导出到全局范围。
请参阅Coffescript如何从其他资产访问function?

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

@lawnsea的答案是伟大的。

我只想补充一些想法。

而不是污染全局命名空间,我宁愿只添加一个variables到window对象。

 window.App = {} 

然后,您可以访问全球的App ,并在那里添加所有的东西。 函数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发布的解决scheme更为谨慎。 但是你可以replace

 window.App = {} 

 @App = {} 

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

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

你应该检查刚刚发布godfoca这个真棒幻灯片http://www.slideshare.net/godfoca/lets-have-a-cup-of-coffeescript此外,你可以尝试通过网页http:/ / /jashkenas.github.com/coffee-script/

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