我正在使用带有简单优化的 Google Closure Compiler 测试一些代码,令我惊讶的是一个函数,例如:
window.navigator.detect = function() {
var t = this,
a = t.userAgent.toLowerCase(),
match = /(chrome|webkit|firefox|msie)[ \/]([\w.]+)/.exec(a) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a) ||
a.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a) || [];
t.ua = match[1] || false;
t.vers = match[2] || "0";
if (t.ua) t[match[1]] = true;
if (match = t.msie)
t.ie = parseInt(t.vers);//ie main version or false if not IE
else if (t.chrome)
t.webkit = true;
else if (t.webkit)
t.safari = true;
//css prefix
t.pre = t.webkit ? '-webkit-' : t.firefox ? '-moz-' : t.ie > 7 ? '-ms-' : t.opera ? '-o-' : '';
}
window.navigator.detect();
变成:
window.navigator.detect = function() {
var a = this.userAgent.toLowerCase(), a = /(chrome|webkit|firefox|msie)[ \/]([\w.]+)/.exec(a) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a) || 0 > a.indexOf("compatible") && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a) || [];
this.ua = a[1] || !1;
this.vers = a[2] || "0";
this.ua && (this[a[1]] = !0);
this.msie ? this.ie = parseInt(this.vers) : this.chrome ? this.webkit = !0 : this.webkit && (this.safari = !0);
this.pre = this.webkit ? "-webkit-" : this.firefox ? "-moz-" : 7 < this.ie ? "-ms-" : this.opera ? "-o-" : ""
};
window.navigator.detect();
我想使用一个较小的 't' 变量作为对 'this' 的引用来节省一些字节,而不是使用更长的 'this' 17 次。在这种情况下,闭包编译器会使我的代码更长,这有点讽刺。不确定这是否是有意的。而且我在 Google 的文档中看不到任何相关内容。
任何想法如何防止这种警告?