16

可能重复:
Internet Explorer、闭包编译器和尾随逗号

我尝试使用Closure Compiler压缩我的 javascript 代码,并且代码的编译产生了这两个错误:

JSC_TRAILING_COMMA:解析错误。IE8(及以下)将错误地解析数组和对象文字中的尾随逗号。如果您的目标是较新版本的 JS,请设置适当的 language_in 选项。在第 379 行字符 0 fontFamily : jqTextareaDiv.css("font-family").replace(/["']{1}/gi,""),

JSC_TRAILING_COMMA:解析错误。IE8(及以下)将错误地解析数组和对象文字中的尾随逗号。如果您的目标是较新版本的 JS,请设置适当的 language_in 选项。在第 932 行字符 0 fontFamily : jqDiv.css("font-family"),

这两个错误似乎是指这段代码:

var jqTextareaDiv = obj.target.parent().parent(),
                            style = {       // the current, relevant style rules for the DIV nesting the textarea
                                fontFamily     : jqTextareaDiv.css("font-family").replace(/["']{1}/gi,""),
                                fontSize       : jqTextareaDiv.css("font-size"),
                                fontStyle      : jqTextareaDiv.css("font-style"),
                                fontWeight     : jqTextareaDiv.css("font-weight"),
                                textDecoration : jqTextareaDiv.css("text-decoration"),
                                textAlign      : jqTextareaDiv.css("text-align"),
                                color          : jqTextareaDiv.css("color"),
                            },
                            jqToolbox = $('#text-edit-toolbox'),
                            jqIndicators = {
                                fontFamily                : $('#font-family-indicator'),
                                fontSize                  : $('#font-size-indicator'),
                                fontStyle                 : $('#font-format-indicators .font-style'),
                                fontWeight                : $('#font-format-indicators .font-weight'),
                                textDecorationUnderline   : $('#font-format-indicators .underline'),
                                textDecorationLineThrough : $('#font-format-indicators .line-through'),
                                textAlignLeft             : $('#text-alignment-indicators .align-left'),
                                textAlignCenter           : $('#text-alignment-indicators .align-center'),
                                textAlignRight            : $('#text-alignment-indicators .align-right'),
                                textAlignJustify          : $('#text-alignment-indicators .align-justify')
                            };

在这种情况下,究竟哪个是尾随逗号,如何在不破坏代码的情况下将其删除?

4

3 回答 3

32

尾随逗号是数组或对象字面量中最后一个元素之后的逗号。所以像这样:

['a', 'b', 'c',] // with trailing comma
['a', 'b', 'c']  // without trailing comma

在这种情况下,尾随逗号跟随对象文字中的最后一个元素:

color          : jqTextareaDiv.css("color"),

如果将其删除,则会发生预期的行为。有了它,IE<9 就不会喜欢它了。

于 2012-08-22T15:24:34.640 回答
3

这是结尾的逗号:

color          : jqTextareaDiv.css("color"), <<--
于 2012-08-22T15:24:27.180 回答
2

您在 . 中有一个尾随逗号color : jqTextareaDiv.css("color"),。那将是第一个警告。第二个警告可能是代码中其他地方的类似定义。

于 2012-08-22T15:24:19.833 回答