我有两个不同版本的 JavaScript 文件:一个运行良好,另一个运行较慢。我已经在这两个文件上尝试过 Closure Compiler,但是......因为我是个白痴,几个月后我很高兴地注意到好版本的原始源文件丢失了。不仅来自我的硬盘,甚至来自我的记忆(我不记得我做了哪些更改)。
所以现在我有:
我需要重建工作良好的源文件,很高兴,两个压缩版本之间确实存在一些差异。
这就是我需要你的帮助。
我在well工作压缩代码中找到了这个
(function () {
// same stuff here
})();
requestAnimFrame(O);
在bad工作压缩代码中是这样的
B.onload = function () {
// same stuff here
};
requestAnimFrame(O)
那么,Closure Compiler 究竟如何声明一个没有名字的函数呢?函数声明末尾的那些
();
是什么?这是如何在未压缩的代码中实现的?如果它可能有帮助,这就是未压缩的错误版本的样子(我希望修复):
function init() {
// same stuff here
}
B.onload = function(){
start()
}
function start() {
init()
requestAnimFrame(0);
}
如果你想自己测试差异,这是使用好的代码时的结果 这是使用错误代码时的结果
尝试点击徽标:立方体在第一个链接中滑动得更快,如果你有一个好的CPU,那么在运行视觉效果时它不应该被杀死。相反,第二个链接似乎使 CPU 过载,并且在动画中进行时显示不同(我已经可以解决第二个问题,发现代码中的差异并记住我更改的内容)。
“那么,Closure Compiler 到底如何声明一个没有名字的函数呢?”
因为JavaScript支持匿名函数。您在分配事件处理程序时可能经常使用它们。
“函数声明末尾的那些
是什么?”();
它们执行与 any 函数后相同的操作。他们援引它。尽管它不是函数“声明”。因为函数被括在括号中,所以它是一个匿名函数表达式。
“如何在未压缩的代码中实现这一点?”
这取决于未压缩的代码。人们在正常代码中经常使用这种模式。它创建一个可以在其中执行代码的局部变量范围。
看起来区别在于,坏的会等待 B 加载然后再执行“相同的操作”,而好的则立即执行。