0

我有两个不同版本的 javascript 文件:一个工作正常,另一个执行较慢。我在这两个文件上都尝试了 Closure Compiler,但是......因为我是个白痴,几个月后我很高兴地注意到好的版本的原始源文件丢失了。不仅来自我的硬盘,甚至来自我的记忆(我不记得我做了哪些更改)。

所以现在我有:

    • 正常工作文件的压缩代码
    • 工作文件的压缩代码
    • 工作文件的未压缩代码

我需要重建运行良好的源文件,很高兴这两个压缩版本之间确实存在一些差异。

这是我需要你帮助的地方。

我在运行良好的压缩代码中发现了这一点

(function () {
// same stuff here      
})();

requestAnimFrame(O);

糟糕的工作压缩代码中是这样的

B.onload = function () {
// same stuff here
};
requestAnimFrame(O)

那么,闭包编译器究竟如何声明一个没有名字的函数呢?();函数声明末尾的那些是什么?这是如何在未压缩的代码中实现的?如果它可能有帮助,这就是未压缩的坏版本(我希望修复)中的样子:

function init() {
// same stuff here
}

B.onload = function(){
start()
}

function start() {
init()
requestAnimFrame(0);
}

如果您想自己测试差异,这是使用好代码时结果,这是使用坏代码时的结果

尝试单击徽标:立方体在第一个链接中滑动得更快,如果您有一个好的 CPU,它不应该在运行视觉效果时被杀死。相反,第二个链接似乎使 cpu 过载并且在动画中进行时有不同的显示(我已经发现了代码中的差异并记住了我所做的更改,从而解决了第二个问题)。

4

2 回答 2

3

“那么,闭包编译器究竟如何声明一个没有名字的函数呢?”

因为 JavaScript 支持匿名函数。在分配事件处理程序时,您可能经常使用它们。

();“函数声明末尾的那些是什么?”

他们在完成任何功能后都会做同样的事情。他们调用它。虽然它不是一个函数“声明”。因为函数被括在括号中,所以它是一个匿名函数表达式

“这是如何在未压缩的代码中实现的?”

这将取决于未压缩的代码。人们在他们的正常代码中经常使用这种模式。它创建了一个局部变量范围,代码可以在其中执行。

于 2012-10-07T21:00:37.787 回答
0

看起来不同的是,坏的在做“同样的事情”之前正在等待 B 加载,而好的则立即执行。

于 2012-10-07T22:16:34.167 回答