Зачем использовать точку с запятой?

Есть ли какие-либо причины, кроме субъективного визуального восприятия и случаев, когда у вас есть несколько операторов в одной строке, использовать точку с запятой в конце операторов в JavaScript?

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

5 ответов

Решение

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

http://aresemicolonsnecessaryinjavascript.com/ <- сейчас нет, используйте

https://github.com/aresemicolonsnecessaryinjavascript/aresemicolonsnecessaryinjavascript.github.com

Потому что JavaScript делает с тобой неприятные вещи, когда угадывает, где поставить точку с запятой. Лучше быть явным и дать толкователю понять, что вы имели в виду, чем позволить блоку идиота угадывать от вашего имени.

Рекомендации:

... и бросок тысяч.

Если вы спросили, потому что вы пришли из Python фона: разница в следующем:

  • в Python вы не должны заканчивать строки чем-либо, но можете использовать точку с запятой, если вам необходимо

  • в JavaScript вы должны заканчивать строки точкой с запятой, но разрешено (PDF, стр. 26, пункт 7.9) пропустить его, если оно однозначно

Так как

  • Отладка тонких ошибок, которые возникают, когда вы этого не делаете, - пустая трата времени, которое вы могли бы потратить, делая что-то крутое
  • Это делает понятным для кого-то, кто будет поддерживать код позже, что вы собираетесь
  • Не все разработчики кода понимают правила автоматической вставки достаточно хорошо, чтобы сохранить код без них
  • Исключение из них зависит от всех инструментов, которые обрабатывают код JavaScript в вашей цепочке инструментов, чтобы получить правильные правила (например, некоторые минифайеры / упаковщики / компрессоры этого не делают, включая Crockford's).jsmin, который сломает код, который в некоторых местах опирается на ASI)

Как предполагает Дуглас Крокфорд -

Положить; (точка с запятой) в конце каждого простого утверждения. Обратите внимание, что оператор присваивания, который присваивает литерал функции или литерал объекта, все еще является оператором присваивания и должен заканчиваться точкой с запятой.

Другие вопросы по тегам