Нужно ли ставить ; в JS?
JS работает и без ; в конце строки и лично мне удобнее их вовсе не ставить, но есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?
Ну и в дополнение, какой оптимизатор посоветуете? Есть ли он онлайн? |
Цитата:
Ставьте точки с запятой только после тех строк, что не оканчиваются на фигурную закрывающую скобку. Посоветую Google Closure Compiler. |
Цитата:
А полезная она в первую очередь в плане читаемости и поддерживаемости кода другими программистами. Именно поэтому все крупные проекты на JS написаны именно с точкой с запятой. Некоторые проекты обычно идут дальше, и валидируют свой код через JSHINT/JSLINT, что позволяет вычистить код от потенциальных ляпов, и неоднозначных моментов, вплоть стандарта форматирования кода |
Не поверите, но навыки форматирования кода я перенял из twitter bootstrap, хотя там JSHINT тоже используется...
|
Цитата:
|
> многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?
нет. а вообще - взял бы и проверил. > А так же интерприиатор тратит время на авторасстановку. не знаю как интерприиаторы, а интерпретаторы ничем таким не занимаются. > (function(){ /*код*/ })() void function(){ /*код*/ }() > А полезная она в первую очередь в плане читаемости и поддерживаемости кода другими программистами. никакой особой читаемости оно не добавляет. только лишняя пунктуация. |
Цитата:
есть левосторонние и правосторонние выражения. чтоб правильно обработать строку нужно знать где она заканчивается. Интерпретатор разделяет строки при условии что не может продолжить . -вывод, значит время тратит ,однозначно ,на обработку неявных окончаний |
яваскрипт интерпретируется не построчно, а сначала разбивается на лексемы лексером, потом парсером создаётся иерархическое дерево, и оно уже "интерпретируется". парсер - это конечный автомат, который последовательно анализирует лексемы и на основе их типа - помещает её в ту или иную часть дерева. лексема ";" точно также завершает текущее выражение как и например лексема "var", так что вывод - парсер тратит дополнительное время на обработку лишней лексемы ";". но всё это такие мелочи..
http://habrahabr.ru/post/136860/ |
У меня в пятницу как раз была проблема из-за того, что забыл поставить ; после функции. В результате посли сжатия получилось что-то вроде этого:
... = function (){ ... }(function(){ ... }) Причем проблема была в том, что это не вызывало никаких ошибок, просто пропала часть функционала:) |
> У меня в пятницу как раз была проблема из-за того, что забыл поставить ;
нет, проблема была в том, что ты начал выражение со скобки. не начинай выражения со скобок и не будет у тебя больше никогда таких проблем. |
Часовой пояс GMT +3, время: 04:09. |