Closure Compiler如何工作?

时间:2011-01-03 18:58:52

标签: javascript google-closure google-closure-compiler

我想知道Google的Closure Compiler是如何工作的。例如,我可以转换函数调用,如:

if (MyApp.isArray(...)) {
    // foobar
}

实际实施:

if ((typeof sthing === 'Object' && sthing.constructor.toString().indexOf("Array") !== -1))

我问这个是因为我有很多包装器绑定了一些功能,我希望Closure Compiler将它们转换回少一个函数调用。

实际上,一个额外的函数调用是否会使应用程序显然更慢?

3 个答案:

答案 0 :(得分:2)

  

实际上,还有一个额外的函数调用   使应用程序显然更慢?

很可能不是,但如果你真的想知道你只需要尝试两个不同的代码示例,看看是否存在差异。涉及很多因素(您的系统,浏览器,您正在调用的功能等),因此测试是可行的方法。我建议Firebug进行分析。

答案 1 :(得分:2)

Closure Compiler(在高级模式下)将是内联的单行函数,或者只调用一次的函数。

显然对于编译器编写者来说,在第一种情况下,保存函数调用更经济,而单行函数通常足够短,与函数调用的长度相似。在第二种情况下,它避免了函数调用并且更短,因此是一个明确的胜利。

据我所知,它不是多行或多次调用的内联函数。这显然是为了避免代码膨胀。

我听说有人说单线功能没有内线,但我总是看到它们在线。

答案 2 :(得分:1)

我认为无论如何让Closure Compiler为您做到这一点。它的主要焦点是缩小源代码,据我所知,它只会内联函数调用,如果它实际上更短的话。