Почему так много точек с запятой в JavaScript?

Я склонен быть плодовитым пользователем с запятой в моем JavaScript:

var x = 1;
var y = 2;
if (x==y){do something};

Недавно я заметил, что я смотрел много JavaScript, у которых нет точек с запятой, следующих за операторами. Затем мне пришло в голову, что я даже не знаю предпочтительного синтаксиса для точек с запятой в JS и после того, как некоторые из них узнали (что удивительно удивительно), что нет необходимости в точках с запятой, кроме расщепления операторов, которые находятся на одной строке.

Итак, вопрос... откуда эта привычка людей, использующих точки с запятой? Является ли это остатком от какого-то популярного языка, который использовался в то время, когда JavaScript вступил в игру? Просто хорошая практика в целом? Это только я?

Я, вероятно, собираюсь придерживаться его ни по какой другой причине, что это хорошо при написании цепей jQuery, чтобы легко определить конец.

UPDATE:

Спасибо за все ответы, все! Похоже, чтобы обобщить все, причина, по которой мы видим много точек с запятой в JS, даже когда они не нужны, исходят из разных переменных:

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

Ответы

Ответ 1

Многие языки компьютеров используют точки с запятой для обозначения конца инструкции. C, С++ и Java являются популярными примерами этого.

Что касается того, почему люди используют их, несмотря на то, что они являются необязательными, они улучшают читаемость вашего кода. В большинстве случаев это просто по привычке, но иногда вам нужны точки с запятой в вашем коде, чтобы устранить возможную двусмысленность. Это всегда лучше безопасно (и непротиворечиво), чем жаль.

Вот пример, взятый из Вы рекомендуете использовать точки с запятой после каждого оператора в JavaScript?

// define a function
var fn = function () {
    //...
} // semicolon missing at this line

// then execute some code inside a closure
(function () {
    //...
})();

Это будет интерпретироваться как:

var fn = function () {
    //...
}(function () {
    //...
})();

Кроме того, точки с запятой позволяют правильно упаковывать/оценивать Javascript. В противном случае все утверждения будут объединены в один большой беспорядок.

Ответ 2

JavaScript требует точки с запятой. Но у него есть автоматическая вставка с двумя двоеточиями.

Большинство программистов JavaScript более умны, чем ASI, и предпочитают быть явными с их полуколонами.

Ответ 3

Привычка исходит из страха. Страх перед "сломанными" js-компрессорами (у меня были некоторые проблемы с компрессорами Plone с унаследованными js, у которых не было, например, оператора var), опасаясь возможных разрушенных реализаций браузера, список можно продолжить. Итак, почему бы просто не использовать ; всюду и избегать всех этих ошибок?

Проблема с этим подходом (просто всегда используйте точки с запятой без дополнительного объяснения) заключается в том, что вы не пытаетесь понять, почему вы делаете это в первую очередь, вы просто делаете, потому что кто-то сказал, что вы это делаете, и IMHO, это также может быть вредным. И сломанные компрессоры, которые у вас были в прошлом, теперь исправлены, и вы продолжаете вставлять точки с запятой... взломать привычки сложно. Мы просто продолжаем делать что-то, потому что "мы всегда это делали".

Многим новым программистам JavaScript рекомендуется использовать точки с запятой повсюду, и ожидаем, что, если они не намеренно используют правила вставки с запятой, они могут смело игнорировать существование весь этот язык. Это не так, из-за описанных выше, в частности, выражение о возврате. Когда вы узнаете о проблеме ограниченного производства, программисты могут затем стать чрезмерно осторожными в отношении разрывов линий и избегать их даже тогда, когда они повысят ясность. Лучше всего ознакомиться со всеми правила для ASI, чтобы иметь возможность читать любой код независимо от того, как он написано и написать код, который так же ясен, как может быть.

Вот отличный ресурс об этой теме и источнике цитаты. Замечательно прочитано.

Какой стиль лучше?В той мере, в какой существует объективно "лучший" выбор, мне кажется, что стиль с минимальной точкой с запятой/запятой немного выше, потому что это принципиально более сканируемо и потому, что оно поощряет программистов, чтобы лучше понять язык, который они используют.

... и 2-ую цитату из более опциональной статьи против использования точек с запятой. Отличное чтение также.

Ответ 4

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

return
    {'foo':'bar'};

будет, из-за автоматической вставки точки с запятой javascript, ничего не возвращает.

Ответ 5

Вероятно, это будет спорный вопрос о происхождении того, как этот способ кодирования стал, но он мог бы возникнуть из способности различать 1 и многие утверждения в условии if, который является общим на большинстве языков. Кроме того, люди могли бы путать синтаксис с литералом объекта JavaScript

Во-первых, у вас есть один оператор, если:

if (someNumber == 2)
  doSomething();
else
  doSomethingElse();

Затем у вас есть многозадачность, если (не требуется никакой полуколонии):

if (someNumber == 3) {
  doThisFirst();
  doThisSecond();
} else
  doSomethingElse();

Этот синтаксис можно также путать с литералом объекта JavaScript, для которого необходим полуцвет:

var SomeObjectLiteral = {
  property: 2,
  doSomething: function() {
  }
};

В принципе, в Javascript важна точка с запятой, чтобы определить, где заканчивается команда или определение. А скобки также важны для определения блоков этих команд. Но вы можете иметь столько полуколонок, сколько хотите. Если у вас есть сомнения, используйте точку с запятой, но будьте готовы, если кто-то вызовет вас из-за отсутствия необходимости:)

Ответ 6

Язык C использует точки с запятой в конце инструкций, а также использует фигурные скобки.

Ответ 7

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

Ответ 8

Точки с запятой отмечают конец операторов в JS, но я не ставил точки с запятой после закрытия, только после утверждения в скобке и ALWAYS в операторе return.

В вашем примере я не считаю это необходимым.

Ответ 9

вы можете написать несколько операторов в функции с помощью точки с запятой; точка с запятой используется для разделения оператора. легко понять.

Ответ 10

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