Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.12.2012, 20:35
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 08.12.2012 в 20:38.
Ответить с цитированием
  #12 (permalink)  
Старый 08.12.2012, 20:44
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

Shitbox2,

Вот отличная статья на эту тему на хабре, все узкие моменты разбираются.

И ответ на ваш вопрос:
"На практике надо ставить везде, ибо все так или иначе сжимают скрипты. И отсутствие точки с запятой может вызвать ошибку в сжатом скрипте, которую крайне сложно найти. "
Ответить с цитированием
  #13 (permalink)  
Старый 08.12.2012, 22:09
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> против чего ты возражал

и где ты узрел в моих словах автоподстановку, если в синтаксическое дерево лексема ";" даже не попадает?

> И ответ на ваш вопрос:

это из комментария, а статья о противоположном. и на практике надо выбирать толковые инструменты, а не подстраиваться под кривые.

> И всё же спасенные микросекунды не стоят того, чтобы отказываться от явного разделения конструкций.

переводы строк вполне себе явные и более естественные разделители. попробуй поработать, например, с питоном и поймёшь, что семиколоны - не более чем атавизм
__________________
.ня
Ответить с цитированием
  #14 (permalink)  
Старый 09.12.2012, 14:18
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
нет, проблема была в том, что ты начал выражение со скобки. не начинай выражения со скобок и не будет у тебя больше никогда таких проблем.
Может быть проще принять такой синтаксис
;(function(){ ... })()
Тогда ; придется ставить лишь в исключительных ситуациях, а не после каждой строки?

Hoshinokoe, спасибо за статью, читаю...
Ответить с цитированием
  #15 (permalink)  
Старый 09.12.2012, 14:23
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

лучше всё же такой
Сообщение от tenshi Посмотреть сообщение
void function(){ /*код*/ }()
__________________
.ня
Ответить с цитированием
  #16 (permalink)  
Старый 09.12.2012, 14:31
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

А почему он должен работать? Т.е., если записать
string function(){ return 'str' }()
то ф-я выполнится? Что-то не нашел такого в синтаксисе...

Из статьи
Цитата:
Когда программа встречает токен, недопустимый грамматикой, вставляется ";", если (а) в этом месте присутствует перенос строки
Вот теперь проблема с выражением, начинающимся со скобок (и с новой строки) становится не ясна. Либо оптимизатор не полностью поддерживает стандарт языка.

P.S. По своему опыту знаю, что пропуск точек с запятой мешает автоформатированию в jsfiddle и т.п. средах, что немного угнетает...

Последний раз редактировалось Shitbox2, 09.12.2012 в 15:10.
Ответить с цитированием
  #17 (permalink)  
Старый 09.12.2012, 15:46
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

нет такого синтаксиса. просто есть оператор void.
__________________
.ня
Ответить с цитированием
  #18 (permalink)  
Старый 09.12.2012, 19:15
Профессор
Отправить личное сообщение для BallsShaped Посмотреть профиль Найти все сообщения от BallsShaped
 
Регистрация: 14.09.2012
Сообщений: 162

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

какая прелесть)
__________________
.ня
Ответить с цитированием
  #20 (permalink)  
Старый 09.12.2012, 22:12
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> Не вижу ни одной веской причины, почему это обязательно необходимо предпочесть этому

меньше нагромождение скобочек, например

> Твоя неприязнь к семиколонам это всего-лишь вопрос твоих личных предпочтений, и не более того.

как и твоя приязнь. о чём спор?

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

тут создаётся лишний объект
__________________
.ня
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно доработать меню за плату, 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