読み取り不可能な変数名を作成したため、読み取り不能です。関連する変数名を作成してからコンパイルしてみませんか。
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