3

以下のコードは、googleanalitycsapiからのものです。スクリプトを暗号化する目的もあれば、ファイルサイズを小さくする目的もあると思います。しかし、私はこれらがもっとあると思います。この種の衰弱の目的は何でしょうか?

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;
4

2 に答える 2

3

これらの変数を使用して、JavaScript 変数名を動的に作成できます。さらに、選択した変数の種類 (1 文字または 2 文字のみ) によってコードが短縮されます。

更新: 例:

var 
  m = "push",
  ia = "test";

for(i=0;i<100;i++)
  eval("var " + ia + i " = \"my_value\";");
于 2012-07-13T08:15:05.900 に答える
1

これは Google サービスであるため、Closure Compiler を使用して JS ファイルを縮小しています。Closure は、できるだけ小さなスペースにすべてを詰め込むために最善を尽くします。

たとえば、以降、 (saves 3 characters)の代わりにj === null言うことができるようになりました。x=jx=null

宣言自体も同様に最適化されているため、一部は直感的でないように見える場合があります。

void 0 === undefined
!0 === true
!1 === false

文字列に関しては、オブジェクト メソッドの呼び出しを短縮するために使用されていると思われます (x[m]()の代わりにx.push(), 2 文字を節約します)。

于 2012-07-13T08:21:15.243 に答える