无法让我的Coffee脚本完全编译成:
( function (root) { return 'Hello Coffee'; }(this) );
Run Code Online (Sandbox Code Playgroud)
第一次尝试:
do (root) ->
'Hello Coffee'
Run Code Online (Sandbox Code Playgroud)
...没有生成与上面相同的代码,输出(with --bare):
(function(root) {
return 'Hello Coffee';
})(root);
Run Code Online (Sandbox Code Playgroud)
没有理由相信你可以完全获得JavaScript,并且可能没有理由得到完全相同的JavaScript.你可以获得功能相同的东西:
((root) -> 'Hello Coffee')(@)
Run Code Online (Sandbox Code Playgroud)
成为这个JavaScript:
(function(root) { return 'Hello Coffee'; })(this);
Run Code Online (Sandbox Code Playgroud)
它与JavaScript的功能相同.
该do关键字用于循环内部:
当使用JavaScript循环生成函数时,通常会插入一个闭包装,以确保循环变量被关闭,并且所有生成的函数不仅仅共享最终值.CoffeeScript提供
do关键字,该关键字立即调用传递的函数,转发任何参数.
你通常会使用这样do的东西:
for x in a
do (x) ->
$("##{x}").click -> console.log x
Run Code Online (Sandbox Code Playgroud)
你想在哪里打破一个循环变量和它在闭包中的使用之间的联系.这就是为什么root在JavaScript版本中出现两次的原因
do (root) ->
'Hello Coffee'
Run Code Online (Sandbox Code Playgroud)
你可以这样做
do (root = @) ->
'Hello Coffee'
Run Code Online (Sandbox Code Playgroud)
这段代码将编译成
(function(root) {
return 'Hello Coffee';
})(this);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |