Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2012, 13:30
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Нужно ли ставить ; в JS?
JS работает и без ; в конце строки и лично мне удобнее их вовсе не ставить, но есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?

Ну и в дополнение, какой оптимизатор посоветуете? Есть ли он онлайн?
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2012, 13:37
Аспирант
Отправить личное сообщение для schmetterling Посмотреть профиль Найти все сообщения от schmetterling
 
Регистрация: 02.12.2012
Сообщений: 30

Сообщение от Shitbox2
есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?
Да, те, которые regExp-ами удалят лишние пробелы. Там даже не сами оптимизаторы заглохнут, а ваш код после них.

Ставьте точки с запятой только после тех строк, что не оканчиваются на фигурную закрывающую скобку.

Посоветую Google Closure Compiler.
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2012, 13:46
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Shitbox2
лично мне удобнее их вовсе не ставить
за неделю написания кода с точками с запятой, легко можно приобрести эту полезную привычку.
А полезная она в первую очередь в плане читаемости и поддерживаемости кода другими программистами.
Именно поэтому все крупные проекты на JS написаны именно с точкой с запятой.
Некоторые проекты обычно идут дальше, и валидируют свой код через JSHINT/JSLINT, что позволяет вычистить код от потенциальных ляпов, и неоднозначных моментов, вплоть стандарта форматирования кода
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2012, 15:37
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Не поверите, но навыки форматирования кода я перенял из twitter bootstrap, хотя там JSHINT тоже используется...
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2012, 15:51
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Shitbox2
Не поверите, но навыки форматирования кода я перенял из twitter bootstrap, хотя там JSHINT тоже используется...
дак и пишите там. в скрипте точки з запятой нужны. особенность интерпретатора - разделяет строки без них , при условии что не может продолжить пред последующей
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2012, 19:19
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?

нет. а вообще - взял бы и проверил.

> А так же интерприиатор тратит время на авторасстановку.

не знаю как интерприиаторы, а интерпретаторы ничем таким не занимаются.

> (function(){ /*код*/ })()

void function(){ /*код*/ }()

> А полезная она в первую очередь в плане читаемости и поддерживаемости кода другими программистами.

никакой особой читаемости оно не добавляет. только лишняя пунктуация.
__________________
.ня
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2012, 19:23
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от tenshi
> А так же интерприиатор тратит время на авторасстановку.
не знаю как интерприиаторы, а интерпретаторы ничем таким не занимаются.
чего это ?
есть левосторонние и правосторонние выражения. чтоб правильно обработать строку нужно знать где она заканчивается.
Интерпретатор разделяет строки при условии что не может продолжить .
-вывод, значит время тратит ,однозначно ,на обработку неявных окончаний
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2012, 20:06
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

яваскрипт интерпретируется не построчно, а сначала разбивается на лексемы лексером, потом парсером создаётся иерархическое дерево, и оно уже "интерпретируется". парсер - это конечный автомат, который последовательно анализирует лексемы и на основе их типа - помещает её в ту или иную часть дерева. лексема ";" точно также завершает текущее выражение как и например лексема "var", так что вывод - парсер тратит дополнительное время на обработку лишней лексемы ";". но всё это такие мелочи..

http://habrahabr.ru/post/136860/
__________________
.ня
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2012, 20:07
Профессор
Отправить личное сообщение для BallsShaped Посмотреть профиль Найти все сообщения от BallsShaped
 
Регистрация: 14.09.2012
Сообщений: 162

У меня в пятницу как раз была проблема из-за того, что забыл поставить ; после функции. В результате посли сжатия получилось что-то вроде этого:
... = function (){ ... }(function(){ ... })

Причем проблема была в том, что это не вызывало никаких ошибок, просто пропала часть функционала
Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2012, 20:19
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> У меня в пятницу как раз была проблема из-за того, что забыл поставить ;

нет, проблема была в том, что ты начал выражение со скобки. не начинай выражения со скобок и не будет у тебя больше никогда таких проблем.
__________________
.ня

Последний раз редактировалось tenshi, 08.12.2012 в 20:24.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно доработать меню за плату, js lumb Работа 1 09.12.2012 14:31
Нужно ли удалять события в js? dmitry111 Оффтопик 31 27.11.2012 12:27
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23
Самая лучшая книга по JS? ulandj Оффтопик 2 06.04.2009 11:35
Нужно с помощью JS записывать данные в БД d!mm Общие вопросы Javascript 2 01.11.2008 18:36