关于JavaScript中的尾随逗号的问题

And*_*iga 16 javascript google-closure-compiler

可能重复:
Internet Explorer,Closure Compiler和Trailing Commas

我尝试使用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')
                            };
Run Code Online (Sandbox Code Playgroud)

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

lon*_*day 32

尾随逗号是一个逗号,它跟在数组或对象文字中的最后一个元素之后.像这样:

['a', 'b', 'c',] // with trailing comma
['a', 'b', 'c']  // without trailing comma
Run Code Online (Sandbox Code Playgroud)

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

color          : jqTextareaDiv.css("color"),
Run Code Online (Sandbox Code Playgroud)

如果删除它,将发生预期的行为.有了它,IE <9将不喜欢它.

  • 如果您不需要支持小于9的IE,您还可以将编译器切换到ECMASCRIPT 5模式,其中尾随逗号行为已标准化(这将有效地允许编译器去除尾随逗号). (2认同)
  • 约翰没有提到的Closure编译器开关:-)` - language_in ECMASCRIPT5` (2认同)