繁体   English   中英

Closure编译器如何工作?

[英]How does Closure Compiler work?

我想知道Google的Closure编译器如何工作。 例如,我可以使它转换如下函数调用:

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

到实际实现:

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

我之所以这样问是因为我有很多包装程序都绑定了某些功能,并且我希望Closure Compiler将它们转换回更少的函数调用。

实际上,一个额外的函数调用会明显降低应用程序运行速度吗?

实际上,一个额外的函数调用会明显降低应用程序运行速度吗?

很有可能没有,但是如果您真的想知道,您只需要尝试两个不同的代码示例,看看是否有所不同。 其中涉及很多因素(您的系统,浏览器,要调用的功能等),因此进行测试是必须的。 我建议对Firebug进行分析。

Closure Compiler(处于“高级”模式)将内联单行函数或仅被调用一次的函数。

对于编译器作者来说,显然,在第一种情况下,保存函数调用更为经济,并且单行函数通常足够短以至于与函数调用的长度相似。 在第二种情况下,它避免了函数调用,并且更短,因此肯定会获胜。

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

我听说过的人说, 的一行功能在成荫,但我一直看到他们在内衬。

我认为Closure Compiler不会为您做任何事情。 据我所知,它的主要重点是最小化源代码,并且如果这样做实际上更短,它只会内联函数调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM