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