Возник спор по поводу ошибки, возникающей в IE, если встречается лишняя запятая в коде.
Ситуация простая: items: [
{xtype: 'textfield', cls: 'fake-field', value: 'Manager Login'},
new Ext.form.TextField(Ext.applyIf({fieldLabel: 'Username', name: 'login', allowBlank:false}, fieldConfig)),
this.passwordField,
this.passwordConfirmField,
new Ext.form.Hidden({name: 'companyId'}),
]
Если последнюю запятую не убрать — IE не отрабатывает скрипт. Все остальные браузеры отработают на ура.
Вопрос: Кто прав? Кодер и его запятая (вместе со всеми браузерами) или же IE (который не хочет обрабатывать явный промах программиста).
Ваш взгляд очень непрофессиональный. Закрывающую запятую в перечислениях программисты ставят издавна (ещё со времен C), это немного сокращает время на написание кода, когда нужно поменять местами или добавлять элементы, не думая о возможных опечатках.
11.1.4: Издание 5 проясняет тот факт, что завершающая запятая в конце ArrayInitialiser не увеличивает длину массива. Это не семантическое изменение по сравнению с изданием 3, однако некоторые реализации ранее могли неверно интерпретировать это.
Т.е., если сказать то же проще: «ввиду того, что разработчики ИЕ имеют альтернативное восприятие окружающей действительности, в 5-й редакции специально для них добавлено особое разъяснение, чтоб уж точно не ошиблись».
Не прав прогер, и у нас на работе почему-то много таких вот не правых.
И не только в JS
наверное потому что люди не Сишники и даже не Паскалисты — а любые «нормальные» языки любое нарушение синтаксиса жестко убивают.
И приучают не писать лишние зпт очень даже быстро
гм, я и про енумы могу длинные гневные посты написать :)
Оставте ка хвостит в определении структуры или обычного байтового массива.
Я вообще пока (в этом году) не увидел «хвостанутые» запятые у коллег никогда бы не додумался что так можно. Уж больно не понятно зачем( чтобы быстрее дописавать новые элементы в хвост? это не ответ )
Да, чтобы банально дописывать новые элементы в хвост. Вам почему-то сложно в это поверить, а ведь дописать запятую в конце элемента перечисления — это раз плюнуть, это экономия времени.
Вы забываете также о макросах, когда макросами генерируются энумы, то это необходимая фича.
С точки зрения логики — логичнее когда каждый элемент в перечислении выглядит одинаково. С какого хуя последний должен отличаться от предыдущих на одну запятую? ;)
С массивами-то (Array) в IE (даже 6) вроде такой проблемы нет, а что касается объектов, используемых в качестве ассоциативных массивов, начиная с IE8 это уже исправлено:
11.1.4: Edition 5 clarifies the fact that a trailing comma at the end of an ArrayInitialiser does not add to the
length of the array. This is not a semantic change from Edition 3 but some implementations may have
previously misinterpreted this.
он не падает. он просто добавляет undefined в конце массива. если вы пройдётесь по этому массиву в цикле и будете у каждого вызывать какие-нибудь методы, то на последней итерации он упадёт, потому что у undefined нет никаких методов