Javascript UglifyJS压缩

Javascript UglifyJS压缩,javascript,gruntjs,uglifyjs,Javascript,Gruntjs,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(){retu

我试图获得一个简单的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();

有人知道我做错了什么吗?

在您的示例中,函数
x
y
是全局函数,可能被其他脚本使用:

function x() {
  return 1;
};
function y() {
  return 2;
};
y();
但是,您可以使用闭包定义范围:

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

现在,
x
不在它的范围内使用,可以毫无顾虑地删除它。

好的,这很公平。我想知道在什么情况下函数会被剥离?你有一个例子吗?啊,很好的观点。谢谢,这确实管用。也许是回答而不是评论,这样我可以给你一个分数。