2014-02-22 62 views
0

我有这个主要的CoffeeScript代码:访问的CoffeeScript功能

<script src="libs/coffeeScript.js"> </script> 
<script src="maths.coffee"> </script> 
<script type="text/coffeescript"> 

document.write math.cube 2 

</script> 

这个代码在“maths.coffee”文件:

math ={} 
math.cube=(x)->x*x*x 

我为什么不能访问多维数据集功能?
我已经尝试了很多在这个网站上找到的解决方案,但没有成功。

+0

试试'@math = {}'。 –

回答

1

问题:

当一个CoffeeScript文件被编译成JavaScript时,它被封装在一个IIFE中。所以,你最终的JS代码看起来是这样的:

(function() { 
    var math = {}; 
    math.cube = function(x) { 
    return x * x * x; 
    }; 
})(); 

这意味着该函数只有IIFE,防止全局命名空间的polution内作用域。

解决办法:

因为你包括你的CoffeeScript在线,你需要明确地暴露你想在其他文件中使用任何功能集成到一个全局对象,例如window

math = {} 
math.cube = (x) -> x * x * x 
window.math = math 

或者,你可以编译手在你的CoffeeScript,并通过在--bare选项。然后只需在页面中包含JavaScript文件。

+0

我试过'window.math =数学',但它不起作用。对于它的作品也没有'windows.math = math'。它不适用于功能。我在浏览器(iPad)上工作。 – user3338488