为什么 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没有其他变量名与之关联。为什么?
我问的原因是,在我的代码的情况下,对function1from的调用function2失败,因为重命名function1不被视为函数调用,function2而是 Javascript 解释器认为这a()是一个数字。
任何见解都值得赞赏。TIA。