Сжатие UglifyJS

Я пытаюсь получить простой пример UglifyJS (v2.3.6) для работы со сжатием.

В частности, «неиспользуемый» вариант, когда переменные и функции удаляются, если они никогда не используются.

Вот моя попытка в командной строке:

echo "function x() { return 1; }; function y() { return 2; }; y();" | uglifyjs -c hoist_funs=true,hoist_vars=true,unused=true

Как видите, функция «x» никогда не используется.

Тем не менее, он не удаляется из результата:

function x(){return 1}function y(){return 2}y();

Может ли кто-нибудь увидеть, что я делаю неправильно?


person user537339    schedule 05.06.2013    source источник
comment
Хорошо, это справедливо. Я пытаюсь понять, при каких обстоятельствах функция будет удалена? У вас есть пример?   -  person user537339    schedule 05.06.2013
comment
Ах, отличный момент. Спасибо, это работает. Может быть, дайте ответ, а не комментарий, чтобы я мог поставить вам точку.   -  person user537339    schedule 05.06.2013


Ответы (1)


В вашем примере функции x и y являются глобальными функциями и могут использоваться другими скриптами:

function x() {
  return 1;
};
function y() {
  return 2;
};
y();

Однако вы можете определить область действия с помощью замыкания:

(function(){
  function x() {
    return 1;
  };
  function y() {
    return 2;
  };
  y();
})();

Теперь x не используется в своем объеме и может быть удален без каких-либо проблем.

person jantimon    schedule 05.06.2013