2013-06-13 64 views
6

我想知道是否有任何方法通過使用像Google Closure這樣的預處理器/編譯器來縮短JavaScript中的匿名函數聲明。我認爲它會很好的回調。作爲跟隨匿名函數聲明簡寫javascript

test("Dummy test", function(){ ok(a == b);}); 

我正在尋找一些Clojure的風格語法:

例如,通常我會寫一個qunit測試用例這樣

test("Dummy test", #(ok a b)); 

這可能嗎?

+2

通過其縮短功能嘗試的CoffeeScript - >(HTTP ://coffeescript.org/#literals) –

+1

OMG另一個問題。我一生都在哪裏? :)但爲了耗盡所有選項,我將打開問題看看是否有任何可以完成相同任務的Closure插件。不過謝謝。 –

+1

由於Closure使用實際的JavaScript解析器來解析其輸入,因此我認爲插件可能會受到一些限制。沒有辦法將'#(ok a b)'解析爲JavaScript。 – ruakh

回答

4

不用擔心預處理器或編譯器,您可以執行以下操作縮短回調語法。有一件事與此是,「這個」不處理,而是爲了您的使用情況下,我不認爲這是很重要的範圍:

var ok = function(a,b) { 
    return (a==b); 
}; 

var f = function(func) { 
    var args = Array.prototype.slice.call(arguments, 1); 

    return function() { 
    return func.apply(undefined,args); 
    }; 
}; 

/* 
Here's your shorthand syntax 
*/ 
var callback = f(ok,10,10); 

console.log(callback()); 
+0

感謝您的輸入 –