Почему так много точек с запятой в 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 может не знать, какой оператор заканчивается там, где в коде больше не будет никаких новых строк.