我有这个主要的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 :(得分:2)
当CoffeeScript文件被编译成JavaScript时,它被包装在IIFE中。所以你最终得到的JS代码看起来像这样:
(function () {
var math = {};
math.cube = function(x) {
return x * x * x;
};
})();
这意味着该函数仅限于该IIFE中的范围,这会阻止全局命名空间的压缩。
由于您要将CoffeeScript内联包含在内,因此需要将要在其他文件中使用的任何函数显式地公开到全局对象上,例如: window
math = {}
math.cube = (x) -> x * x * x
window.math = math
或者,您可以事先编译CoffeeScript,并传递--bare
选项。然后只需在页面中包含JavaScript文件。