Точка с запятой
Всем известно, что точка с запятой в JS является необязательной, однако во многих руководствах рекомендуют ее лепить везде, где ни попадя. Создается впечатление, что никто не знает, где на самом деле она нужна. Я не исключение, есличо.
Часто приводятся дебильные примеры, где все очевидно, например, ретурн f=function(){ return some } Эти примеры для идиотов. Лично я еще замечал, что ругань идет вот в таких случаях 1 (1+1) Насколько я понимаю, парсер если видит на новой строке открывающуюся скобку, полагает по-дефолту, что это вызов функции, он тут орет, что 1 - это не функция. То есть, единственным случаем трактовки переноса строки не как разделителя, является вызов функции: a=function(x){return x} (1) a//1 Я это решаю таким вот способом. 1 ;(1+1) По моим наблюдениям, это единственный случай неодназначности (ну, пример выше мы не будем считать, вещи подобного рода дебильно-очевидны, разница между expr x и expr; x) Возможно я ошибаюсь, и хотелось бы увидеть другие случаи. А если их нет, может тогда перестать горлопанить о необходимости или желательности точек с запятой? Язык разработан таким образом, что расстановка точек с запятой не нужна. Автор языка не идиот, он знал что делал. Если бы он захотел сделать по-другому, он бы сделал. Подытоживая: 1) для дебилов: выражение 1 и выражение 2 должно иметь разделитель, и не следует разделять <exp\ns1>. Примеры подоного рода, как, например, с return выше, мы не рассматриваем. 2) Вызов функции Есть ли еще случаи? UPD Выяснил еще 2 случая: квадратная скобка и слеш |
Короткие записи условий и циклов ещё.
Вообще если на то пошло: точка с запятой нужна - не нужен перенос строки. Тогда не будет никаких неоднозначностей. Для языка и интерпретатора так гораздо лучше. А то что ты, жалкий органик, не способен работать с таким кодом - исключительно твои проблемы.) |
Если выражаться языком автора, то необязательная точка с запятой как раз и была реализована для дебилов.
|
Цитата:
|
var a = 1, b = 0 if(a>b) a=b -b > 0 ? b=1 : b=2; alert([a,b]) var a = 1, b = 0 if(a>b) a=b; -b > 0 ? b=1 : b=2; alert([a,b]) P.S. Есть языки(вт.ч. компилируемые в js) не только без точек с запятой но и без скобочек вообще, там вся суть в правильном кол-ве отсупов. Наверное это то что вам нужно. Лично меня от одного взгляда на подобное корёжит, мне важно, чтобы все скобочки и точки с запятой были всегда на месте, и как бы я не перетасовывал свой код, он продолжал работать. Отступы и переносы строк - для меня исключительно форматирование и дело вкуса, точки с запятой, скобки итд - элементы языка. И мешать одно с другим мне видится противным. |
Aetae,
Тут у тебя дело не в цикле. У тебя в первом примере a=false. Знак арифметической операции там отрабатывает. |
foo, ясенхуй. Это к тому что следить придётся постоянно где стаить и не ставить, не только после функций. Впрочем читай выше моё отношение к перемешиванию форматирования и кода.
|
Цитата:
|
Цитата:
|
|
Часовой пояс GMT +3, время: 09:01. |