以下CoffeeScript代码:
do (a) ->
console.log a
生成这个:
(function(a) {
return console.log(a);
})(a);
如何将值传递给此类?
(function(a) {
return console.log(a);
})("hello");
答案 0 :(得分:21)
do (a = 'hello') ->
console.log a
generate将完全符合您的要求。
尽管如此,我不得不承认我无法理解这一点。如果您真的希望a
在该范围内使用文字值'hello'
,那么为什么要制作另一个范围?将a
作为声明为a = 'hello'
的正常变量就足够了。现在,如果你想用另一个变量的值替换a
(可能在一个循环或其他东西中改变)并且do (a = b) ->
那么我觉得它更有意义,但你可以简单地做{{} 1}}只需在do (a) ->
范围内使用a
代替b
。
答案 1 :(得分:3)
如果您正在使用Module Pattern,那么在使用可能相互冲突的多个Javascript库时使用$ global非常有用:
mySingleton = do ($ = jQuery) ->
colorIt -> $('.colorme').css('backgroundColor', 'red')
mySingleton.colorIt()
答案 2 :(得分:2)
do
是CoffeeScript中的一个特殊关键字。它创造了一个封闭。我想你想要这样的东西:
log = (msg) ->
console.log msg
编译为:
var log;
log = function(msg) {
return console.log(msg);
};
像任何其他功能一样使用它:log("hello")
答案 3 :(得分:2)
你可以这样做
do (a = "foo")->
console.log a
但你真的为什么要这样做? WHat是您尝试实施的更完整的用例