我想知道Google的Closure Compiler是如何工作的。例如,我可以转换函数调用,如:
if (MyApp.isArray(...)) {
// foobar
}
实际实施:
if ((typeof sthing === 'Object' && sthing.constructor.toString().indexOf("Array") !== -1))
我问这个是因为我有很多包装器绑定了一些功能,我希望Closure Compiler将它们转换回少一个函数调用。
实际上,一个额外的函数调用是否会使应用程序显然更慢?
答案 0 :(得分:2)
实际上,还有一个额外的函数调用 使应用程序显然更慢?
很可能不是,但如果你真的想知道你只需要尝试两个不同的代码示例,看看是否存在差异。涉及很多因素(您的系统,浏览器,您正在调用的功能等),因此测试是可行的方法。我建议Firebug进行分析。
答案 1 :(得分:2)
Closure Compiler(在高级模式下)将是内联的单行函数,或者只调用一次的函数。
显然对于编译器编写者来说,在第一种情况下,保存函数调用更经济,而单行函数通常足够短,与函数调用的长度相似。在第二种情况下,它避免了函数调用并且更短,因此是一个明确的胜利。
据我所知,它不是多行或多次调用的内联函数。这显然是为了避免代码膨胀。
我听说有人说长单线功能没有内线,但我总是看到它们在线。
答案 2 :(得分:1)
我认为无论如何让Closure Compiler为您做到这一点。它的主要焦点是缩小源代码,据我所知,它只会内联函数调用,如果它实际上更短的话。