小型JavaScript中的注释会发生什么变化?

小型JavaScript中的注释会发生什么变化?,javascript,minify,Javascript,Minify,缩小的JavaScript文件中的注释会发生什么变化?浏览器如何知道注释的结尾是何时所有内容都压缩到一行?举个小例子,我有如下Google跟踪代码: //Google tracking var _gaq = _gaq || []; _gaq.push(['_setAccount', '123456']); 缩小版将所有内容都集中到一行中 // Google tracking var _gaq = _gaq || []; _gaq.push(['_setAccount', '123456']

缩小的JavaScript文件中的注释会发生什么变化?浏览器如何知道注释的结尾是何时所有内容都压缩到一行?举个小例子,我有如下Google跟踪代码:

//Google tracking
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', '123456']); 
缩小版将所有内容都集中到一行中

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

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

缩小注释或插入换行符。例如,他说:

我可以将闭包编译器与其他JavaScript迷你程序一起使用吗?

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

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

有时候,你真的需要一个评论,在这种情况下,他们会插话

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

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

迷你们有时也会断行,因为有些解释器的源代码解析器在很长的行上崩溃或执行得很慢

以前,因为我们处理的是块,所以错误消息可以包含多少行是有限制的。但是现在错误消息包含了整行内容如果您有很长的行和很多错误,这会导致内存使用率很高,特别是因为我们在错误消息字符串上调用了
js\u DeflateString()
,导致它有两个副本(一个是
jschar
s,另一个是
char
s)

在所讨论的站点上,在包含122895个字符的行上发生了大量错误,导致超过1G的
char
s(每个
char
!)被放入错误消息中


JavaScript单行注释在到达的第一个新行字符处结束。迷你程序将在删除换行符之前删除注释,这样它就不会破坏您的代码

例如,如果粘贴

//GOOGLE TRACKING
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', '123456']); 
使用您得到的简单优化进入

var _gaq=_gaq||[];_gaq.push(["_setAccount","123456"]);
通过高级优化,您可以获得:

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

这两个版本中的注释都将被删除。

您使用的是哪种迷你浏览器?迷你们应该尽可能多地删除字符,尤其是注释之类的东西。(以及您案例中的空格)您使用什么缩小脚本?取决于缩小器,但我认为一个好的缩小器会完全排除注释。这根本不是缩小。只是删除了换行符。甚至没有删除空格。那么它是哪一个“缩小器”呢?我自己没有缩小脚本,所以我不知道使用了什么。我从一个客户那里得到了这个,直到最近我才开始质疑这是否会执行任何代码。我敢打赌,客户端有人试图手动“缩小”代码,结果是这样的。谢谢你的帮助。