Проблема, связанная с запятыми в JavaScript

Возможный дубликат:
Internet Explorer, закрывающий компилятор и запятые

Я попытался сжать мой код JavaScript с помощью Closure Compiler, и компиляция кода породила эти две ошибки:

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')
                            };

Какова именно запятая в этом случае и как я могу удалить ее, не нарушая код?

3 ответа

Решение

Завершающая запятая - это запятая, которая следует за последним элементом в массиве или литерале объекта. Ну вот так:

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

В этом случае завершающая запятая следует за последним элементом в вашем литерале объекта:

color          : jqTextareaDiv.css("color"),

Если вы удалите его, произойдет ожидаемое поведение. С этим там, IE<9 не понравится.

Это запятая:

color          : jqTextareaDiv.css("color"), <<--

У вас есть запятая в color : jqTextareaDiv.css("color"),, Это было бы первым предупреждением. Второе предупреждение, вероятно, аналогичное определение где-то еще в вашем коде.

Другие вопросы по тегам