缩小的 JavaScript 中的注释会发生什么

What happens to comments in minified JavaScript?

本文关键字:什么 注释 JavaScript 缩小      更新时间:2023-09-26

缩小的JavaScript文件中的注释会怎样?浏览器如何知道评论的结尾是所有内容都压缩到一行的时间?举个小例子,我有这样的谷歌跟踪代码:

//Google tracking
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', '123456']); 

缩小版将所有内容拉到一行中

// Google tracking var _gaq = _gaq || []; _gaq.push(['_setAccount', '123456']);

还有更多的语句,但是当我在编辑器中检查JavaScript代码时,它看起来像一个巨大的注释(或多或少(。是否有一个隐藏字符告诉浏览器何时结束注释,或者此代码只是没有执行?

缩小器去除注释或插入换行符。 例如,闭包编译器的常见问题解答说:

我可以将闭

包编译器与其他 JavaScript 简化器一起使用吗?

是的。闭包编译器读取任何有效的 JavaScript 并生成有效的 JavaScript,因此您可以在通过不同的缩减器运行文件之前或之后将闭包编译器应用于 JavaScript 文件。

请记住,闭包编译器和其他简化器可能对传入的代码有期望。例如,去除注释的缩小器可能会删除其他工具所需的许可证或注释信息。

有时你真的需要一个注释,在这种情况下,他们会放一个换行符。

我的源代码中必须显示版权声明或开源许可证文本。如何防止闭包编译器剥离此文本?

闭包编译器支持 JSDoc @license 标记。将 @license 标记添加到任何 JSDoc 注释,以在编译器输出中保留该注释。有关更多信息,请参阅为闭包编译器注释 JavaScript。

缩小器也倾向于偶尔换行,因为一些解释器的源代码解析器崩溃或在很长的行上执行得非常慢。

https://bugzilla.mozilla.org/show_bug.cgi?id=634444

以前,由于我们处理的是块,因此错误消息可以包含的行数是有限制的。 但是现在错误消息包含整行。 如果你有很长的行和很多错误,这是高内存使用率的秘诀,特别是因为我们在错误消息字符串上调用js_DeflateString(),导致它的两个副本(一个由 jschar s组成,另一个由 char s 组成(。

在有问题的站点上,包含 122,895 个字符的行上发生了大量错误,导致超过 1G 的 char 秒(每char 3 个字节!

JavaScript 单行注释在到达的第一个换行符处结束。缩小器将在删除换行符之前删除注释,这样它就不会破坏您的代码。

例如,如果您粘贴

//GOOGLE TRACKING
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', '123456']); 

进入闭包编译器,通过简单的优化获得

var _gaq=_gaq||[];_gaq.push(["_setAccount","123456"]);

通过高级优化,您可以获得:

var a=a||[];a.push(["_setAccount","123456"]);

两者中的注释都将被删除。