当我在http://closure-compiler.appspot.com处的闭包编译器中测试以下代码时:
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// @formatting pretty_print
// ==/ClosureCompiler==
// These get renamed
window.foo = {};
window.bar = {};
// These don't
window.uid = {};
window.test = {};
输出结果为:
window.a = {};
window.b = {};
window.uid = {};
window.test = {};
为什么要重命名:
window.foo = {};
window.bar = {};
但不是:
window.uid = {};
window.test = {};
某些词似乎是一个问题?
答案 0 :(得分:6)
截至20150315版本的Closure-compiler,默认情况下会启用基于类型的优化。
Closure Compiler不会重命名与externs中对象上定义的任何属性同名的属性,除非启用了--use_types_for_optimization
标志。有关详细信息,请参阅the project FAQ。