我有一个JavaScript文件,我通过Google Closure编译器运行,它将名称on
发送到za
,从长度的角度来看,这显然不是更有效。事实上,它是否有某种原因更有效(可能是因为使用了字母),还是只是几个随机字母?
例如,我可以想象当Gzipped时za
可能比on
更易于压缩,但很有可能它只是几个随机字母。
答案 0 :(得分:3)
在使用http://closure-compiler.appspot.com/home之后,似乎编译器只是开始重命名变量而不管它们以前的名字。它保持在'a'并通过'b'等等...它似乎并不关心变量名的当前长度,但它将确保整体大小与之前相同或更小。在某些情况下,如果使用高级优化设置,变量可能会从代码中重构。
通过让编译器处理变量的命名,可以确保它们之间没有任何冲突。如果它试图保留现有的变量名称,则必须单独跟踪它并维护一个列表进行比较。
缩小代码的另一个好处是混淆代码库。当然有人可以弄明白,如果他们真的想要,但通过使变量名称编程,它使得更难弄清楚其含义。
如果你真的想通过组合&缩小代码我建议查看Google Chrome Canary http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
的源地图功能答案 1 :(得分:1)
是否有某种原因实际上它更有效(可能是因为使用了字母)
没有
或只是几个随机字母?
差不多。 AFAIK,Closure Compiler(以及其他JS minifiers)系统地重命名变量,目标是总体上使用较少的字符,而不查看它们已被命名的内容。