2011 年の Google I/O プレゼンテーションを見ています https://www.youtube.com/watch?v=M3uWx-fhjUc
39:31 の時点で、Michael はクロージャ コンパイラの出力を示しています。これは、以下に含まれるコードのようなものです。
私の質問は、このコードが正確に何をしているのかです (どのように、なぜ)
// Question #1 - floor & random? 2147483648?
Math.floor(Math.random() * 2147483648).toString(36);
var b = /&/g,
c = /</g,d=/>/g,
e = /\"/g,
f = /[&<>\"]/;
// Question #2 - sanitizing input, I get it...
// but f.test(a) && ([replaces]) ?
function g(a) {
a = String(a);
f.test(a) && (
a.indexOf("&") != -1 && (a = a.replace(b, "&")),
a.indexOf("<") != -1 && (a = a.replace(c, "<")),
a.indexOf(">") != -1 && (a = a.replace(d, ">")),
a.indexOf('"') != -1 && (a = a.replace(e, """))
);
return a;
};
// Question #3 - void 0 ???
var h = document.getElementById("submit-button"),
i,
j = {
label: void 0,
a: void 0
};
i = '<button title="' + g(j.a) + '"><span>' + g(j.label) + "</span></button>";
h.innerHTML = i;
編集
洞察に満ちた回答をありがとう。コンパイラがスクリプトの先頭でランダムな文字列生成をスローした理由について、私はまだ本当に興味があります。きっとそれにはちゃんとした理由があるはずです。誰???