JS函数名压缩

JS function names compression

我似乎找不到执行函数名称压缩的 JS 缩小器。例如,给出这个伪代码:

//non pure function
function test() {
   //do some computations...
   return <whatever>;
}

alert(test());

然后,例如,将被缩小为:

function t(){//do some computations... return <whatever>}alert(t());

到目前为止,我还没有找到任何执行这种压缩的 JS 工具。有人知道吗?

当然!您可以使用任务运行程序(即 Grunt 或 Gulp)来协助,但您描述的过程通常定义为 "uglifying" 或 "mangling" JS。查看 gulp-uglify or grunt-contrib-uglify 开始。

编辑:根据对此答案的评论,没有必要使用任务运行器,因为您可以单独使用 UglifyJS

当您使用 UglifyJS 时,它不会破坏顶级名称或全局范围内可用的名称。

如果您像这样在命令行中打开 -mt 或 --mangle-toplevel 标志,您仍然可以实现此目的:

这是我在演示中发布的一些代码 link 你提供的:

function longfunctionname(a) {
  return function reallylongfunctionname(b) {
    return a + b;
  };
}

这是未打开顶级重整的重整代码:

function longfunctionname(n){return function u(n){return n}}

如您所见,顶层函数没有被破坏,但内部函数是

到这里阅读更多:http://lisperator.net/uglifyjs/

编写不污染全局的代码是个好习惯space。通过包裹在匿名函数中,代码将缩小并且不会与其他全局引用冲突。

(function (){
   function test() {
    //do some computations...
    return "something";
   }
   alert(test());
})();

如果你 运行 使用 --mangle UglifyJs 输出将如下所示

!function(){function t(){return"something"}alert(t())}();

我使用 https://skalman.github.io/UglifyJS-online/ 来获取生成的 UglifyJs 代码