2013-04-29 27 views
8

有沒有一種方式如何別名function運營商沒有太多的開銷像eval?我想寫入的函數操作符可以被別名嗎?

fn test() { ... } 

代替

function test() { ... } 

剝離在縮小的代碼中的一些字節。只是好奇。

+1

沒有。 '功能'必須拼寫出來。 – 2013-04-29 19:06:18

+11

爲什麼?它已經被gzipped了,對吧?所以它會壓縮到基本上什麼都沒有。浪費優化。 – 2013-04-29 19:06:20

+2

@DaveNewton:難道你不說關於unminified JavaScript的同樣的事情嗎? – 2013-04-29 19:07:06

回答

5

有沒有辦法讓別名函數操作符沒有太多的開銷?

沒有。

當然,除非你使用的ECMAScript 6據稱將包含什麼叫做"fat arrow" syntax

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

在那之前,你堅持不斷地宣稱:

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

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

如果你使用的是TypeScript,今天可以使用:) – 2013-04-29 19:10:12

+4

@MortenMertner:但是編譯成JavaScript,現在我們又回到了開始的地方。 – 2013-04-29 19:11:17

+1

@RocketHazmat當然可以。這對現在的海報沒有什麼幫助,但是現在可以讓他編寫他的代碼,以便將來佔用更少的空間(一旦可以直接定位ES6)。 – 2013-04-29 19:15:44

2

正如戴夫指出的那樣,最好編寫正確的腳本並讓gzip做它的工作。但是,如果你不害怕eval()並被同伴看不起,但你可以建立一個預處理器來定製一種語言 - 其中一個函數可以啓用=>聲明。

在需要前處理一些外部文件或隱藏標籤:地方

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

在您的預處理器:

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

但同樣,它通常最好是隻寫的JavaScript按照標準,讓gzip做好工作。

相關問題