2013-06-13 16 views
6

Zastanawiam się, czy istnieje sposób na skrócenie deklaracji funkcji anonimowej w JavaScript przy użyciu preprocesora/kompilatora, takiego jak Google Closure. Sądzę, że byłoby całkiem fajnie dla callbacków.Skrót deklaracji funkcji anonimowej javascript

Na przykład, normalnie bym napisać przypadek testowy qunit ten sposób:

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

szukam jakiegoś Clojure inspirowane składni jak następuje:

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

Czy to możliwe?

+2

Wypróbuj CoffeeScript ze skróceniem funkcji przez -> (http : //coffeescript.org/#literals) –

+1

OMG kolejne pytanie. Gdzie to było całe moje życie? :) Ale w celu wyczerpania wszystkich opcji, zostawię pytanie otwarte, aby zobaczyć, czy istnieje jakikolwiek plugin zamknięcia, który może wykonać to samo zadanie. W każdym razie dzięki. –

+1

Ponieważ Closure używa rzeczywistego parsera JavaScript do analizowania danych wejściowych, myślę, że wtyczki są prawdopodobnie nieco ograniczone w tym, co mogą osiągnąć. Nie ma sposobu, aby parsować '# (ok a b)' jako JavaScript. – ruakh

Odpowiedz

4

Bez martwienia się o preprocesory lub kompilatory, można wykonać następujące czynności, które skracają składnię wywołania zwrotnego. Jedną z rzeczy jest to, że zakres "tego" nie jest rozwiązywany ... ale dla twojego przypadku użycia nie uważam, że to jest ważne:

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

dzięki za twój wkład –

Powiązane problemy