它不可读,因为您创建了不可读的变量名,为什么不创建相关的变量名然后编译它。
document.getElementById
不能重命名,但您可以创建一个返回的函数,该函数document.getElementById
可以重命名。
var getElementById = function(id){
return document.getElementById(id);
}
var getElementByIdClick = function(id, method_call){
return getElementById(id).onclick = method_call;
}
这可以编译为
function f(h) {
return document.getElementById(h);
}
function g(h, k) {
return f(h).onclick = k;
}
或者
function f(h){return document.getElementById(h)}function g(h,k){return f(h).onclick=k}
闭包编译器的诀窍是尽可能多地使用变量,这通常不是一个好主意,但闭包非常好,它会决定什么是最好的。
因此,除了将重复出现的代码移动到函数中之外,您还可以将每个“点符号”交换为“方括号符号”,并为每个属性和方法名称使用一个变量。
这是一个极端的例子。
var _document=document,getElementById='getElementById', id='test',onclick='onclick',method_call=function(){};
_document[getElementById](id)[onclick] = method_call;
闭包编译器将决定是否使用括号,如果使用它将重命名您的变量。
你可能会得到这个;
var a=document,b='getElementById',c='test',d='onclick',e=function(){};
a[b](c)[d]=e;
或者它可能会用点符号替换它并删除所有变量,但至少你已经给了它选项。
document.getElementById('test').onclick=function(){} //method_call
document.getElementById('test')
永远不能编译成这个a[b](c)
闭包编译ADVANCED_OPTIMIZATIONS
选项将重命名函数,但它确实考虑了函数的使用次数。它可能会完全删除该功能而只使用它。document.getElementById