Я минимизирую некоторый код с помощью 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"}()};
Предположительно есть причина, почему этот способ делать вещи не рекомендуется. Что/почему это? а также если есть работа, которую я хотел бы знать, так как клиентский код скорее использовал бы свойство.
Спасибо.
Обратите внимание, что функция выполнена - у вас есть '()' после ее определения. – Kobi
Я не вижу никаких проблем, поместите это в консоль: '(o = {c: 1, t: function() {return" this work "}()}). T'. –
Это все еще выполняется немедленно - круглые скобки вокруг определения функции в исходном коде были лишними, uglify удалили их, чтобы их уменьшить. – Barmar