2013-04-29 28 views
8

Czy istnieje sposób na alias operatora function bez nadmiernego obciążenia, jak eval? Chciałbym napisaćCzy operator funkcji może mieć aliasy?

fn test() { ... } 

zamiast

function test() { ... } 

rozebrać kilka bajtów w kodzie minified. Po prostu ciekawy.

+1

Nie. 'function' musi być napisane. –

+11

Dlaczego? To już jest gzipowane, prawda? Więc i tak kompresuje się w zasadzie do niczego. Strata optymalizacji. –

+2

@DaveNewton: Czy nie mógłbyś powiedzieć tego samego o unminified javascript? –

Odpowiedz

5

Czy istnieje sposób na alias funkcji operatora bez zbytniego narzutu?

Nie.

ile oczywiście używasz ECMAScript 6, które rzekomo zawierają co nazywa "fat arrow" syntax:

var test = (arg1, arg2) => arg1 + arg2; 

Do tego czasu, utkniesz stale oświadczając:

var test = function (arg1, arg2) { return arg1 + arg2 }; 

lub

function test(arg1, arg2) { 
    return arg1 + arg2; 
} 
+1

Dostępne dzisiaj, jeśli używasz TypeScript :) –

+4

@MortenMertner: Ale to kompiluje się w JavaScript, a teraz wróciliśmy tam, gdzie zaczęliśmy. –

+1

@RocketHazmat Tak, oczywiście. Nie pomaga teraz w plakacie, ale pozwoli mu napisać teraz swój kod w sposób, który zajmie mniej miejsca w przyszłości (gdy tylko będzie można bezpośrednio kierować do ES6). –

2

Jak zauważył Dave, najlepiej napisać odpowiedni skrypt i pozwolić gzipowi zrobić swoją pracę.

Ale jeśli nie boisz się eval() i jest traktowany przez swoich rówieśników, ale możesz zbudować preprocesor, aby nieco dostosować język - jedną z funkcji może być deklaracja =>.

W pewnym zewnętrznym pliku lub ukrytego znacznika, który wymaga wstępnego przetwarzania:

f=(x,y)=>{return x+y;} 

W swojej preprocesora gdzieś:

var s = loadCodeToPreprocess(whatever); 
s = s.replace(/(\([^()]*\))=>/g, "function$1"); 
eval(s); 

Ale znowu, to zazwyczaj najlepiej jest po prostu napisać JavaScript według standardu i niech gzip wykona swoją pracę.

Powiązane problemy