我有一个复杂的道场的应用程序,可以正常工作未编译,但与谷歌的编译后关闭编译器 ,我得到了一些行为的细微差别。
由于它是,它是极其困难的调试,我一直无法找到与谷歌关闭编译和未编译的JavaScript之间可能存在的功能差异的任何信息。
任何人都可以点我的已知的区别的方向,或分享任何类似的经验和从哪里开始寻找一些想法?
我有一个复杂的道场的应用程序,可以正常工作未编译,但与谷歌的编译后关闭编译器 ,我得到了一些行为的细微差别。
由于它是,它是极其困难的调试,我一直无法找到与谷歌关闭编译和未编译的JavaScript之间可能存在的功能差异的任何信息。
任何人都可以点我的已知的区别的方向,或分享任何类似的经验和从哪里开始寻找一些想法?
VERBOSE
警告级别。 这将打开所有的检查。 debug
标志。 它使重命名的符号变得特别长,但他们以这样的方式,你可以找到原来的命名。 如果代码的工作原理与debug
标志,但不能没有它,它几乎可以肯定是一个重命名问题。 formatting=PRETTY_PRINT
。 调试压缩代码,而这是痛苦的。 --use_types_for_optimization false
。 不正确类型注释会导致编译器作出无效的假设。 更新:由于20150315编译器发布的,基于类型的优化默认情况下启用。
与乍得的答案的帮助下,我发现了一个bug在我的工作代码如下所示:
a = [b, b = a][0]; // swap variable values
被编译到:
a = b;
这可能是固定在以后的版本,因为与在线Closure编译器的应用程序测试没有表现出同样的错误。 通过不巧言令色,并使用第三变量,而交换价值来保存旧值固定它。
我已经看到道场1.3(预闭合)一对夫妇的问题: