1

我使用UglifyJs縮小文件一些代碼,我有一個問題的性質。如果我有一個自我執行的函數作爲對象文字的屬性,那麼在縮小的時候它會被簡化爲一個函數。自我執行功能對象常量

var o = { 
    c : 1, 
    t : (function(){ 
     return 'this worked'; 
    }()) 
}; 

uglifyjs t.js > u.js 

var o={c:1,t:function(){return"this worked"}()}; 

大概有爲什麼不建議做的事情這樣一個原因。這是什麼/爲什麼?而且如果有我想知道的解決方法,因爲客戶端代碼寧願使用一個屬性。

謝謝。

+1

請注意,該函數被執行 - 你在它的定義後有'()'。 – Kobi

+1

我沒有看到任何問題,放在控制檯中:'(o = {c:1,t:function(){return「這工作」}()})。t'。 –

+0

它仍然立即執行 - 原始代碼中函數定義的括號是多餘的,uglify刪除它們以更多地縮小它。 – Barmar

回答

1

它返回相同的自執行功能,無需周圍的括號...所以我沒有看到這個問題...

作爲一個說明,JSON不支持它的內容聲明功能。你可以使用它,因爲它仍然是javascript代碼,但是你不能序列化它......等等。