CoffeeScript中的函数

时间:2011-06-01 19:50:30

标签: javascript coffeescript

我正在尝试将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

如何解决这个问题?

6 个答案:

答案 0 :(得分:77)

您需要将convert函数导出到全局范围 见How can Coffescript access functions from other assets?

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

答案 1 :(得分:33)

@lawnsea答案很棒。

我只想补充一些想法。

我没有污染全局命名空间,而是只向window对象添加一个变量。

window.App = {}

然后,您可以全局访问App并在那里添加所有内容。现在可以用这种方式表达函数convert

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

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

convert 1,2,3

现在全球

App.convert 1,2,3

答案 2 :(得分:16)

在coffeescript文件的顶层,(又名 @ )应引用窗口。所以要在这里附上它,你可以使用简写:

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

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

window.App = {}

@App = {}

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

答案 3 :(得分:4)

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

答案 4 :(得分:1)

你应该查看今天由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

答案 5 :(得分:0)

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