Javascript.RU

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

Точка с запятой
Всем известно, что точка с запятой в 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 случая: квадратная скобка и слеш

Последний раз редактировалось foo, 27.06.2014 в 09:44.
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2014, 12:58
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Короткие записи условий и циклов ещё.
Вообще если на то пошло: точка с запятой нужна - не нужен перенос строки. Тогда не будет никаких неоднозначностей. Для языка и интерпретатора так гораздо лучше. А то что ты, жалкий органик, не способен работать с таким кодом - исключительно твои проблемы.)
__________________
29375, 35

Последний раз редактировалось Aetae, 27.06.2014 в 13:01.
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2014, 13:07
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Если выражаться языком автора, то необязательная точка с запятой как раз и была реализована для дебилов.
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2014, 13:15
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Aetae
Короткие записи условий и циклов ещё.
А можно пример? че-то не доходит, о чем речь.
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2014, 13:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

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) не только без точек с запятой но и без скобочек вообще, там вся суть в правильном кол-ве отсупов. Наверное это то что вам нужно. Лично меня от одного взгляда на подобное корёжит, мне важно, чтобы все скобочки и точки с запятой были всегда на месте, и как бы я не перетасовывал свой код, он продолжал работать.
Отступы и переносы строк - для меня исключительно форматирование и дело вкуса, точки с запятой, скобки итд - элементы языка. И мешать одно с другим мне видится противным.
__________________
29375, 35

Последний раз редактировалось Aetae, 27.06.2014 в 13:50.
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2014, 14:34
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Aetae,
Тут у тебя дело не в цикле. У тебя в первом примере a=false. Знак арифметической операции там отрабатывает.
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2014, 19:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

foo, ясенхуй. Это к тому что следить придётся постоянно где стаить и не ставить, не только после функций. Впрочем читай выше моё отношение к перемешиванию форматирования и кода.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 27.06.2014, 19:56
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Aetae
следить придётся
Не так уж и много, правил этих. Получается, скобки, слеши, арифметика. Короче можно обобщить спецсимволы, для простоты. Дело тут не в форматировании, я сам его не люблю, а в отделении выражений одно от другого. Писанины с точками с запятой больше на порядок. Вроде фигня, поставил лишний знак в строке а за жизнь сколько этих строк накопиться?
Ответить с цитированием
  #9 (permalink)  
Старый 27.06.2014, 20:06
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Aetae
к перемешиванию форматирования и кода
И в данном случае, можно относиться к переносу строки как к символу \n, для парсера это так и есть, то что ты его не видишь, это ни о чем не говорит. Так что, это такой же разделитель, как и точка с запятой.
Ответить с цитированием
  #10 (permalink)  
Старый 14.11.2016, 21:55
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

foo,
Статья на тему
исходник

Последний раз редактировалось DynkanMaclaud, 14.11.2016 в 21:59.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничение на ввод в инпут (цифры, точка, минус) Fenec Events/DOM/Window 4 24.07.2015 07:40
Ввод числа с запятой справа налево tzarek Элементы интерфейса 2 24.09.2013 16:51
Нужна помощь! Определить попадает ли выбранная точка в область КАД? mafin Общие вопросы Javascript 6 03.09.2013 12:19
Помогите ограничить вывод знаков после запятой в скрипте djonA Общие вопросы Javascript 2 02.05.2012 01:41
Точность вычисления чисел с плавающей запятой Mihas2 Общие вопросы Javascript 2 19.01.2010 16:32