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>
转换(6,3,10);
但它不起作用,我得到一个错误,说:ReferenceError:cannotfind variable:convert
如何更正此问题?您应该查看godfoca今天刚刚发布的这些很棒的幻灯片。您也可以在
convert = (num1, num2, num3) -> num1 + num2 * num3
您需要将convert函数导出到全局范围。
看
@劳伦斯的回答很好 我只想补充一些想法 我宁愿只向
窗口
对象添加一个变量,而不是污染全局名称空间
window.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 = {}
与
使用@的好处是它在node.js中指的是全局,因此您可以使用相同的代码在浏览器和服务器端环境中公开您的功能。认为您在其中有一个多余的空间:“->”这个答案非常正确。必须强调的是,一旦连接到
窗口
,window.convert
就可以像convert
一样从任何地方访问;但是编写convert=
会创建一个名为convert
的变量,其作用域为localvar
scope。我记得匿名作用域,但忘记了Trevor的建议,将其放在窗口上,使其可在coffeescript的空间之外调用。给出的答案是正确的,但您真正应该做的是将剩余的JS从HTML中取出,并放入外部JS或coffeescript文件中。JS不属于HTML。
App.convert 1,2,3
@convert = (num1, num2, num3) -> num1 + num2 * num3
window.App = {}
@App = {}