有人可以告诉我如何立即调用CoffeeScript中的函数。我正在尝试完成类似于这个JS对象文字的东西。
WEBAPP = {
maxHeight : function(){
/* Calc stuff n' stuff */
WEBAPP.maxHeight = /* Calculated value */
}(),
someProperty : ''
/* ... */
}
可行或有什么办法吗?
答案 0 :(得分:20)
有do
:
WEBAPP =
maxheight: do -> 1+1
someProperty: ''
编译为
var WEBAPP;
WEBAPP = {
maxheight: (function() {
return 1 + 1;
})(),
someProperty: ''
};
答案 1 :(得分:2)
对于遇到此问题的任何其他人,您还可以将do
关键字与默认函数参数组合,以便为递归"立即调用的函数"具有初始值。例如:
do recursivelyPrint = (a=0) ->
console.log a
setTimeout (-> recursivelyPrint a + 1), 1000
答案 2 :(得分:1)
为什么你不尝试这样的事情?
square = (x) -> x * x
WEBAPP = {
maxHeight: square(3),
someProperty: ''
}
<强>更新强>
BTW:这是其他解决方法
WEBAPP = {
maxHeight: (() ->
1 + 2
)()
}