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代码,但是你不能序列化它......等等。