1

Я минимизирую некоторый код с помощью UglifyJs, и у меня возникла проблема. Если у меня есть функция самоисполнения как свойство объектного литерала, то при минимизации она сводится к функции.Self Выполнение функций как свойств объектных литералов

т.е.

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" this work "}()}). T'. –

+0

Это все еще выполняется немедленно - круглые скобки вокруг определения функции в исходном коде были лишними, uglify удалили их, чтобы их уменьшить. – Barmar

ответ

1

Он возвратил же само выполнение функции без скобок, окружающих ... так что я не вижу проблемы ...

Как примечание, JSON не поддерживает функцию, объявленную в его содержании. Вы можете использовать его, поскольку он по-прежнему является кодом javascript, но вы не можете его сериализовать ... и т. Д.

Смежные вопросы