为什么 Closure Compiler 会为以下两个函数生成不同的代码(使用高级选项):
var function1 = function() {
return 1 * Math.random();
};
window['function1'] = function1; // export function1
var function2 = function() {
return function1() + 1;
};
window['function2'] = function2; // export function2
这是生成的代码:
function a() {
return 1 * Math.random();
}
window.function1 = a;
window.function2 = function() {
return a() + 1; // call to a() fails in a more complex example
};
请注意,function1
已重命名a
并a
分配给全局变量function1
。function2
没有其他变量名与之关联。为什么?
我问的原因是,在我的代码的情况下,对function1
from的调用function2
失败,因为重命名function1
不被视为函数调用,function2
而是 Javascript 解释器认为这a()
是一个数字。
任何见解都值得赞赏。TIA。