08.12.2012, 13:30
|
Профессор
|
|
Регистрация: 04.10.2010
Сообщений: 571
|
|
Нужно ли ставить ; в JS?
JS работает и без ; в конце строки и лично мне удобнее их вовсе не ставить, но есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?
Ну и в дополнение, какой оптимизатор посоветуете? Есть ли он онлайн?
|
|
08.12.2012, 13:37
|
Аспирант
|
|
Регистрация: 02.12.2012
Сообщений: 30
|
|
Сообщение от Shitbox2
|
есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?
|
Да, те, которые regExp-ами удалят лишние пробелы. Там даже не сами оптимизаторы заглохнут, а ваш код после них.
Ставьте точки с запятой только после тех строк, что не оканчиваются на фигурную закрывающую скобку.
Посоветую Google Closure Compiler.
|
|
08.12.2012, 13:46
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от Shitbox2
|
лично мне удобнее их вовсе не ставить
|
за неделю написания кода с точками с запятой, легко можно приобрести эту полезную привычку.
А полезная она в первую очередь в плане читаемости и поддерживаемости кода другими программистами.
Именно поэтому все крупные проекты на JS написаны именно с точкой с запятой.
Некоторые проекты обычно идут дальше, и валидируют свой код через JSHINT/JSLINT, что позволяет вычистить код от потенциальных ляпов, и неоднозначных моментов, вплоть стандарта форматирования кода
|
|
08.12.2012, 15:37
|
Профессор
|
|
Регистрация: 04.10.2010
Сообщений: 571
|
|
Не поверите, но навыки форматирования кода я перенял из twitter bootstrap, хотя там JSHINT тоже используется...
|
|
08.12.2012, 15:51
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от Shitbox2
|
Не поверите, но навыки форматирования кода я перенял из twitter bootstrap, хотя там JSHINT тоже используется...
|
дак и пишите там. в скрипте точки з запятой нужны. особенность интерпретатора - разделяет строки без них , при условии что не может продолжить пред последующей
|
|
08.12.2012, 19:19
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
> многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?
нет. а вообще - взял бы и проверил.
> А так же интерприиатор тратит время на авторасстановку.
не знаю как интерприиаторы, а интерпретаторы ничем таким не занимаются.
> (function(){ /*код*/ })()
void function(){ /*код*/ }()
> А полезная она в первую очередь в плане читаемости и поддерживаемости кода другими программистами.
никакой особой читаемости оно не добавляет. только лишняя пунктуация.
__________________
.ня
|
|
08.12.2012, 19:23
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от tenshi
|
> А так же интерприиатор тратит время на авторасстановку.
не знаю как интерприиаторы, а интерпретаторы ничем таким не занимаются.
|
чего это ?
есть левосторонние и правосторонние выражения. чтоб правильно обработать строку нужно знать где она заканчивается.
Интерпретатор разделяет строки при условии что не может продолжить .
-вывод, значит время тратит ,однозначно ,на обработку неявных окончаний
|
|
08.12.2012, 20:06
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
яваскрипт интерпретируется не построчно, а сначала разбивается на лексемы лексером, потом парсером создаётся иерархическое дерево, и оно уже "интерпретируется". парсер - это конечный автомат, который последовательно анализирует лексемы и на основе их типа - помещает её в ту или иную часть дерева. лексема ";" точно также завершает текущее выражение как и например лексема "var", так что вывод - парсер тратит дополнительное время на обработку лишней лексемы ";". но всё это такие мелочи..
http://habrahabr.ru/post/136860/
__________________
.ня
|
|
08.12.2012, 20:07
|
Профессор
|
|
Регистрация: 14.09.2012
Сообщений: 162
|
|
У меня в пятницу как раз была проблема из-за того, что забыл поставить ; после функции. В результате посли сжатия получилось что-то вроде этого:
... = function (){ ... }(function(){ ... })
Причем проблема была в том, что это не вызывало никаких ошибок, просто пропала часть функционала
|
|
08.12.2012, 20:19
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
> У меня в пятницу как раз была проблема из-за того, что забыл поставить ;
нет, проблема была в том, что ты начал выражение со скобки. не начинай выражения со скобок и не будет у тебя больше никогда таких проблем.
__________________
.ня
Последний раз редактировалось tenshi, 08.12.2012 в 20:24.
|
|
|
|