Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是闭包编译器?_Javascript - Fatal编程技术网

Javascript 什么是闭包编译器?

Javascript 什么是闭包编译器?,javascript,Javascript,如果你不知道我在说什么,看看这个:(这是一个JavaScript迷你程序) 在其现场,他们声明如下: 闭包编译器将JavaScript编译为compact, 高性能代码。编译器删除死代码并重写和 最大限度地减少剩下的内容,以便快速下载和运行。它也 检查语法、变量引用和类型,并对常见错误发出警告 JavaScript陷阱。这些检查和优化有助于您编写 更少bug、更易于维护的应用程序 但是有人真的能详细解释这个闭包编译器对我的代码做了什么吗? 高级_优化转换包括: 更激进的重命名: 使用简单的_

如果你不知道我在说什么,看看这个:(这是一个JavaScript迷你程序)


在其现场,他们声明如下:

闭包编译器将JavaScript编译为compact, 高性能代码。编译器删除死代码并重写和 最大限度地减少剩下的内容,以便快速下载和运行。它也 检查语法、变量引用和类型,并对常见错误发出警告 JavaScript陷阱。这些检查和优化有助于您编写 更少bug、更易于维护的应用程序

但是有人真的能详细解释这个闭包编译器对我的代码做了什么吗?

高级_优化转换包括:

  • 更激进的重命名:
    使用简单的_优化编译只会重命名函数中的参数和变量。高级_优化还重命名全局变量、函数名和属性

  • 死代码删除:
    使用高级_优化进行编译将删除可证明无法访问的代码。这在与大型库结合使用时特别有用。如果只使用大型库文件中的几个函数,编译器可以从其输出中删除除这些函数以外的所有函数

  • 全局内联:
    使用高级_优化的编译将某些函数调用替换为函数体。这种转换称为“内联”。编译器仅在确定内联是安全的并节省空间时才内联函数。使用高级_优化的编译还可以在编译器确定可以安全地执行此操作时内联常量和一些变量


闭包编译器将编译您的代码,并对代码执行标准优化技术


从表面上看,生成的代码可能具有相似性,也可能不具有相似性,但其工作原理通常完全相同。

它不会始终保持相同的工作原理,因为它执行了某些优化,这不是因为CC被破坏,而是因为编译的代码在编写时没有考虑到CC准则。@pst:的确,有时,除非您在使用高级模式时正确地准备代码,否则它的工作原理是不一样的。我同意@pst的说法,这个名字很不幸,但是用“编译”这个词的任何合理定义来描述正在进行的工作都是完全错误的。@Amit谢谢。我真的希望他们能把这一点说清楚,而不是说他们让代码变得更好。@davin事实上,如果我没有错的话,他们确实会先编译代码,然后生成一个类似的工作代码,使用所有众所周知的优化,然后命名,为什么他们不制作一个程序,让你的JavaScript变得更好,然后你可以最小化它呢?整个编译过程就是最小化。允许全局死代码删除和优化的关键来自允许全局变量和属性重命名的假设。