CoffeeScript中的函数

Functions In CoffeeScript

本文关键字:函数 CoffeeScript      更新时间:2023-09-26

我正在尝试将function从Javascript转换为CoffeeScript。这是代码:

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

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


我正在尝试从这样的HTML源代码运行该函数:

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

但它不起作用,我收到一个错误,说:ReferenceError: Can't find variable: convert

如何更正?

您需要将convert函数导出到全局范围
请参阅Coffescript如何访问其他资产的功能?

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

@lawnsea的答案很棒。

我只是想补充一些想法。

与其污染全局名称空间,我更喜欢只向window对象添加一个变量。

window.App = {}

然后,您可以全局访问App,并在那里添加所有内容。函数convert现在可以这样表示:

App.convert = convert = (a, b, c) -> a + b * c

然后,调用本地范围内的函数

convert 1,2,3

现在全球

App.convert 1,2,3

在您的coffeescript文件的顶层,这个(又名@)应该引用窗口。所以把它附在这里,你可以用缩写:

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

请注意,这会污染全局命名空间。jm-发布的解决方案更为谨慎。但你可以取代

window.App = {}

带有

@App = {}

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

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