2012-06-28 66 views
0

我想的JavaScript代碼是如何通過命名函數作爲變量,coffescript

someFunction(42, function onSuccess() {}, function onFailure() {}) 

注意,在定義的onSuccess和onFailure處,我想他們的名字(不是因爲它是必要的,但因爲它記載了碼)。但是,我無法獲得coffeescript來生成此代碼。

對於匿名函數傳遞我可以做

someFunction(42, 
-> 
// onsuccess code 
-> 
// onfailure code 
) 

但是,當我試圖給名字的功能,有望爲Javascript並沒有翻譯

someFunction(42, 
onSuccess : -> 
// onsuccess code 
onFailure : -> 
// onfailure code 
) 

轉化爲

someFunction(42, { onSuccess : function() {}, onFailure : function() {} }) 

另一個嘗試

someFunction(42, 
onSuccess -> 
// onsuccess code 
onFailure -> 
// onfailure code 
) 

轉化爲

someFunction(42, onSuccess(function() {}), onFailure(function() {})) 

我該怎麼辦呢?

+1

我不認爲CoffeeScript的有什麼辦法可以創建一個名爲功能:(吮吸錯誤痕跡。 – david

回答

1

能完成這項工作?

http://jsfiddle.net/keith_nicholas/Qdzph/

生成..

somefunction(42, (onSuccess = function() {}), onFailure = function() {}); 

也,這可能是感興趣http://kangax.github.com/nfe/

,並在CoffeeScript的常見問題,它談論你爲什麼不能產生命名功能: -

https://github.com/jashkenas/coffee-script/wiki/FAQ

+0

這並不完全生成我想要的輸出(即命名函數),但它確實可以用來記錄代碼。它不會幫助上面的大衛在評論中提到的錯誤痕跡。我不明白你爲什麼在onSuccess上添加括號,我沒有看到它有什麼不同。良好的鏈接abfe nfe。 – Jayesh

+0

這就是爲什麼我包括另一個鏈接,其中說你想要的JavaScript是非法的(儘管一些瀏覽器可能支持它) –

+0

他想要的JavaScript不是'非法',它只是一個命名函數表達式。 – david

1

在CoffeeScript中創建一個名爲函數的唯一方法是使用class

someFunction 42, 
    class onSuccess 
    constructor: -> 
    class onFailure 
    constructor: -> 
+0

這會生成一些非常有趣的代碼。 http://jsfiddle.net/jyro/cJgzD/遠離我所需要的。 – Jayesh