JavaScript и IE: Expected identifier, string or number

В старом блоге была заметка с точно таким же заголовком и аналогичной смысловой нагрузкой. Я подумал, что нет никакого резона переносить ее в новый блог, слишком уж сомнительной, как мне казалось, была ее ценность.

Тем не менее, время от времени натыкаюсь на скрипты, где расставлены все те же грабли. Ситуация приобретает особый шарм, если содержащее ошибку приложение пропущено через компрессор и несжатые исходники отсутствуют.

Ошибка: Error: Expected identifier, string or number

Данная ошибка возникает в том случае, если в перечислении свойств объекта присутствует лишняя запятая — после последнего свойства. JavaScript движок в IE 7 (и ниже) считает, что не задано наименование следующего свойства объекта. Ситуация усугубляется тем, что при возникновении такой ошибки прекращается обработка всех JS скриптов на странице.




Ошибку вызовет вот такой код:

<script type="text/javascript">
myObject = {
	first: 1,
	second: 2,
}
</script>

Как показывает опыт, чаще всего она допускается при перечислении свойств плагинов популярных JavaScript фреймворков. В предыдущей заметке я приводил пример, в котором фигурирует jQuery:

<script type="text/javascript">
jQuery("#date_input").datepicker({
	dateFormat: 'yy-mm-dd',
	firstDay: 1,
});
</script>

В обоих примерах, если убрать последнюю запятую в списке свойств, ошибка «Expected identifier, string or number» исчезнет.

Комментарии (1)

  1. Александр

    IE8 тоже это не любит

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *