以下代码来自google analitycs api。我可以想象一些目的是加密脚本,一些是降低文件大小。但我还有更多这些。这种贬低的目的可能是什么呢?
var g = void 0,
i = !0,
j = null,
k = !1,
aa = encodeURIComponent,
ba = Infinity,
fa = setTimeout,
ga = decodeURIComponent,
l = Math;
function ha(a,b){
return a.name=b
}
var
m = "push",
ia = "test",
ja = "slice",
o = "replace",
ka = "load",
la = "floor",
ma = "charAt",
na = "value",
q = "indexOf",
oa = "match",
pa = "port",
qa = "createElement",
ra = "path",
r = "name",
t = "host",
u = "toString",
v = "length",
w = "prototype",
sa = "clientWidth",
x = "split",
ta = "stopPropagation",
ua = "scope",
y = "location",
va = "search",
z = "protocol",
wa = "clientHeight",
xa = "href",
A = "substring",
ya = "apply",
za = "navigator",
B = "join",
C = "toLowerCase",
D;
答案 0 :(得分:3)
这些变量可用于动态创建javascript变量名称。 加上选择的变量(仅限一个或两个字母)将缩短代码。
更新:示例:
var
m = "push",
ia = "test";
for(i=0;i<100;i++)
eval("var " + ia + i " = \"my_value\";");
答案 1 :(得分:1)
由于它是Google服务,因此他们使用Closure Compiler来缩小JS文件。 Closure尽最大努力在尽可能小的空间内挤压所有东西。
例如,自j === null
起,您现在可以说x=j
而不是x=null
(保存3个字符)。
声明本身也是优化的,因此其中一些可能看起来有点不直观:
void 0 === undefined
!0 === true
!1 === false
至于字符串,我怀疑它们用于缩短对对象方法的调用(x[m]()
而不是x.push()
,节省2个字符。)