0

我有一个通过 Google Closure 编译器运行的 JavaScript 文件,它将名称on更改为za,从长度的角度来看,这显然不是更有效。实际上,是否有某种原因它更有效(可能是因为使用的字母),还是只是几个随机字母?

例如,我可以想象它za可能比Gzip 压缩on时更可压缩,但很有可能它只是几个随机字母。

4

2 回答 2

3

在玩弄了一些http://closure-compiler.appspot.com/home之后,编译器似乎只是开始重命名变量而不管它们以前的名称。它停留在'a'并通过'b'等......它似乎并不关心变量名的当前长度,但它会确保整体大小与以前相同或更小。在某些情况下,如果您使用高级优化设置,变量可能会从代码中重构出来。

通过让编译器处理变量的命名,可以确保它们之间没有冲突。如果它试图保留您现有的变量名称,则必须单独跟踪它并维护一个列表以进行比较。

缩小代码的另一个好处是混淆你的代码库。当然,如果他们真的想的话,有人可以弄清楚,但是通过使变量名编程化,就很难弄清楚其含义。

如果您真的想通过组合和缩小的代码进行调试,我建议您查看 Google Chrome Canary 的源地图功能http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

于 2012-04-04T21:17:39.827 回答
1

是否有某种原因,它实际上更有效(可能是因为使用的字母)

不。

还是只是几个随机字母?

差不多。AFAIK、Closure Compiler(和其他 JS 压缩器)系统地重命名变量,目标是总体上使用更少的字符,而不查看它们已经命名的内容。

于 2012-04-04T20:47:39.643 回答