Как разработчику Javascript, мне всегда нравится осознавать, что мне не нужно использовать утомительные точки с запятой в конце каждого оператора. Отсутствующая точка с запятой — одна из самых распространенных синтаксических ошибок или ошибок, которые допускают многие программисты, и в Интернете гуляют тысячи мемов об этом. Но как JavaScript интерпретирует ваш код без точек с запятой? Python делает то же самое, но использует отступы и новую строку для каждого нового оператора. JavaScript тоже работает таким образом?

Давайте посмотрим на это.

Кстати, прежде чем продолжить, взгляните на этот мем.

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

ASI работает следующим образом. Разбор инструкции продолжается до тех пор, пока не будет найдено:
• точка с запятой
• знак конца строки, за которым следует недопустимый токен

Другими словами, ASI можно рассматривать как вставку точек с запятой в разрывы строк, но означает ли это, что вы будете свободны от всех ошибок? Я считаю это всеобщим законом, нужно компенсировать, чтобы получить другие блага. Давайте посмотрим, где это может привести к повреждению кода.

JavaScript запрещает разрывы строк после некоторых токенов. Если вы вставите разрыв строки, будет вставлена ​​и точка с запятой.

Токен, где это наиболее актуально, — это возврат. Рассмотрим, например,
следующий код:

return
{
first: 'jane'
};

следующий код будет проанализирован как

return;
{
first: 'jane';
};

Да, вы правильно поняли, АСИ - палка о двух концах. Это может быть очень полезно, если использовать его с осторожностью, но в то же время он может создавать ошибки, которые похожи на поиск иголки в стоге сена.

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

Следующие примеры скопированы из JavaScript для нетерпеливых программистов (издание ES2022)

Example 1: Unintended function call.
a = b + c
(d + e).print()
Parsed as:
a = b + c(d + e).print();

Example 2: Unintended division.
a = b
/hi/g.exec(c).map(d)
Parsed as:
a = b / hi / g.exec(c).map(d);

Example 3: Unintended property access.

someFunction()
['ul', 'ol'].map(x => x + x)
Executed as:
const propKey = ('ul','ol'); // comma operator
assert.equal(propKey, 'ol');
someFunction()[propKey].map(x => x + x);

Теперь вопрос в том, следует ли использовать точку с запятой?

Что ж, по моему личному мнению, как разработчику ржавчины, я всегда хочу, чтобы мой код был хорошо отформатирован. Разработчик всегда должен помнить, что его код предназначен не только для чтения им. Он должен быть написан идеально, чтобы другие могли понять, что делается.

Точки с запятой придают визуальную структуру, люди, которые читают, всегда знают, где заканчивается утверждение.

Меньше правил, о которых нужно помнить

большинство разработчиков Javascript используют точки с запятой.

Но это все еще зависит от вас. Не существует универсального этического кодекса для использования точек с запятой в javascript, даже когда я впервые запустил свой бэкэнд в node. JS Я тоже никогда не использовал точки с запятой, но чтение собственного кода, написанного год назад, иногда заставляет меня задуматься о том, что сделано, может быть, потому что сейчас я использую ржавчину.

Но, как уже говорилось, точка с запятой хороша для структурирования кода.

Твой выбор