我正在观看 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;
编辑
感谢您富有洞察力的答案。我仍然对编译器在脚本顶部生成随机字符串的原因感到非常好奇。当然,这一定是有充分理由的。任何人???