Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.01.2010, 15:59
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от subzey
iff (!x) /* заканчивается \r\n — запускаем функцию iff — ошибка, если такой нет */
Верно. Механизм автоматической вставки точки с запятой завершит эту инструкцию.

Это самый главный момент - это именно RuntimeError, не ParseError (SyntaxError). Соответственно, если ещё и функция iff существует, то в этом месте ошибки вообще не будет (а вот такие ошибки уже являются ошибками логики программы - программа полностью рабочая и нерабочая одновременно).

Причина и следствие ясны.

Возможно ли как-то избавиться от RuntimeError (именно это я имел в виду, когда спрашивал про избавление от подобного типа ошибки), но не допустить ошибки в логике программы? Т.е. можно, конечно, объявить функцию iff, и RuntimeError-a не будет, но это ещё больше усугубит дело, т.к. ошибка не будет отловлена.

Сообщение от subzey
{ /* начинаем объявление объекта */ x = 1; /* ошибка синтаксиса, что-то типа «недопустимое имя свойства»? */ }
Угу, спасибо, возможно. Ещё подождём.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 12.01.2010 в 16:30.
Ответить с цитированием
  #12 (permalink)  
Старый 12.01.2010, 23:30
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от subzey
{ /* начинаем объявление объекта */ x = 1; /* ошибка синтаксиса, что-то типа «недопустимое имя свойства»? */ }
это уже parseErrorr и программа не запустится. вопрос стоит так что написание программы проходит компиляцию но в процессе выполнения будут ошибки или вообще ошибок не будет но работать будет не так как надо.
Ответить с цитированием
  #13 (permalink)  
Старый 12.01.2010, 23:45
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от PeaceCoder
это уже parseErrorr и программа не запустится
Не обязательно Я не сказал, что будет ошибка с фигурными скобками, я сказал "возможно", чтобы другие могли ответить.

Меня как раз интересует, можно ли сделать так, чтобы был SyntaxError на стадии парсинга? Чтобы мы отловили ошибку с iff ещё до запуска и не допустили случая логической ошибки, если будет существовать функция iff.

В сущности, все подсказки были даны в заголовке темы (две из них уже разобраны).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #14 (permalink)  
Старый 12.01.2010, 23:49
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

ну остается только механизм. это обьявление функции при которой ключевое слово funcion отсутсвует.
Ответить с цитированием
  #15 (permalink)  
Старый 13.01.2010, 00:27
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от PeaceCoder
ну остается только механизм.
Нет, "механизм" из подсказок, уже задействовали - это механизм автоматической вставки точки с запятой.

Также, задействовали "опечатку".

Осталась "стилистика кода". Отмечу, что я обычно использую стилистику не ту, что была приведена в примере, хотя в текущем проекте у нас принята именно стилистика из примера.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #16 (permalink)  
Старый 13.01.2010, 01:35
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

пока пришла в голову только использовать обязательно конечный else, таким образом вызывая именно ошибку парсинга
непонятно что делать с другими стандартными структырами типа циклов do,do-while, и условий switch-case(фигню сморозил.они дадут syntax error на первом case)
Ответить с цитированием
  #17 (permalink)  
Старый 13.01.2010, 01:36
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Если не будет точки с запятой внутри фигурных скобок - ошибки не будет (будет, невнимательность)

Сообщение от Dmitry A. Soshnikov
Меня как раз интересует, можно ли сделать так, чтобы был SyntaxError на стадии парсинга? Чтобы мы отловили ошибку с iff ещё до запуска
Писать нужно как принято и не будет никаких двойственных ситуаций (я про перенос скобки).
iff (!x) {
  x = 1;
}

Последний раз редактировалось B~Vladi, 13.01.2010 в 01:55.
Ответить с цитированием
  #18 (permalink)  
Старый 13.01.2010, 02:01
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от B~Vladi
Писать нужно как принято и не будет никаких двойственных ситуаций (я про перенос скобки).
видимо это и есть то к чему нас подводил Дмитрий
хотя не факт
ибо, такой подход все еще не решает проблему do-while
x=false;
doq=123;
i=0;
doq {
alert(i);//в опере данный код показывает один alert, после чего процессор начинает показывать 100% нагруженность, без каких-либо изменений на странице скрипта
//мозилла показывает ошибку missing ; before statement "doq {\n"
i++;
if(i==3)
  x = true;
}while(!x);
alert('end');
Ответить с цитированием
  #19 (permalink)  
Старый 13.01.2010, 08:54
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Gvozd
//в опере данный код показывает один alert, после чего процессор начинает показывать 100% нагруженность, без каких-либо изменений на странице скрипта //мозилла показывает ошибку missing ; before statement "doq {\n"
Видимо, опера добавляет ";" после doq (может, потому что находит значение doq?), т.к. если самому это вставить в мозилле - эффект будет тот же как и в опере. Непонятно только почему выскакивает алерт - открывающая скобка никого не смущает?! Получается, что можно указывать любые выражения в имени свойства?
Ответить с цитированием
  #20 (permalink)  
Старый 13.01.2010, 10:10
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от B~Vladi
любые выражения в имени свойства?
вы забываете что фигурные скобочки используются не только для объектов, но и для блочности кода
то есть в зависимости от контекста, фигурные скобочки будут использоваться так или иначе
<script type="text/javascript">
var qwe={alert(1)};//missing : after property id, ибо объект
</script>
<script type="text/javascript">
{alert(1)};//выведет alert, ибо это блок кода
</script>

Сообщение от Gvozd
ибо, такой подход все еще не решает проблему do-while
Сообщение от Gvozd
//в опере данный код показывает один alert
на самом деле для разработки приложений решает проблему, ибо обычно код отлаживается в первую очередь при помощи огнелиса, и в нем синтаксическая ошибка и вылезет
Ответить с цитированием
Ответ



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

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