在Coffeescript.org上:
bawbag = (x, y) ->
z = (x * y)
bawbag(5, 10)
Run Code Online (Sandbox Code Playgroud)
会编译为:
var bawbag;
bawbag = function(x, y) {
var z;
return (z = (x * y));
};
bawbag(5, 10);
Run Code Online (Sandbox Code Playgroud)
通过node.js下的coffee-script编译包装如下:
(function() {
var bawbag;
bawbag = function(x, y) {
var z;
return (z = (x * y));
};
bawbag(5, 10);
}).call(this);
Run Code Online (Sandbox Code Playgroud)
文件说:
如果要为其他要使用的脚本创建顶级变量,请将它们作为属性附加到窗口或CommonJS中的exports对象上.存在运算符(如下所述)为您提供了一种可靠的方法来确定添加它们的位置,如果您的目标是CommonJS和浏览器:root = exports?这个
如何在CoffeeScript中定义全局变量."将它们作为窗口上的属性附加"是什么意思?
当我使用最新的(1.0)咖啡脚本时,一个简单的javascript输出看起来像这样(默认情况下):
(function() {
var a;
a = 1;
}).call(this);
Run Code Online (Sandbox Code Playgroud)
是什么.CALL(本)做,哪些是添加它的原因是什么?
在我的CoffeeScript文件中clients.js.coffee,
myFunction = (variable) ->
Run Code Online (Sandbox Code Playgroud)
我在CoffeeScript中创建了一个函数app/assets/javascript.但是当我尝试调用该函数时,控制台向我显示错误,指出找不到函数.
我检查页面的来源,它显示脚本已加载:
<script src="/assets/clients.js?body=1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
这是在脚本源中找到的内容:
(function() {
var myFunction;
myFunction = function(variable) {}
}).call(this);
Run Code Online (Sandbox Code Playgroud)
知道我错过了什么吗?我应该怎么做才能调用这个函数?
如何省略将变量隐藏在全局范围内的自动闭包?
(function() {
// my compiled code
}).call(this);
Run Code Online (Sandbox Code Playgroud)
只是玩弄CoffeeScript + SproutCore,当然,我更愿意保留原样:在这种情况下,没有必要保护任何东西不被覆盖.
我知道我可以使用@或this.在声明,但这不是太优雅.
出于某种原因,coffeescript编译器在编译时将所有.coffee文件包装在函数中.例如,如果我有test.coffee:
class TestClass
constructor: (@value) ->
printValue: () ->
alert(@value)
printAValue = () ->
test = new TestClass()
test.printValue()
Run Code Online (Sandbox Code Playgroud)
然后我得到test.js:
(function() {
var TestClass, printAValue;
TestClass = (function() {
function TestClass(value) {
this.value = value;
}
TestClass.prototype.printValue = function() {
return alert(this.value);
};
return TestClass;
})();
printAValue = function() {
var test;
test = new TestClass();
return test.printValue();
};
}).call(this);
Run Code Online (Sandbox Code Playgroud)
我的简单html文件不适用于此:
<html>
<head>
<script src="test.js"></script>
</head>
<body onload="printAValue()">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我之前没有使用过很多JS,我不会怀疑咖啡编译器,但它应该如何工作?怎么样