Нужна ли точка с запятой?
выясняем насколько нужна точка с запятой в конце строки в JavaScript
Я только начинаю свой путь в JavaScript и, возможно поэтому, использую базовый синтаксис. Разбирая примеры кода, я, прежде всего, обращаю внимание на знаки препинания: точки с запятой, круглые и квадратные скобки. Фигурные скобки для меня интуитивно понятны - в них заключен код функций. В JavaScript я пришел из Ruby, поэтому использование круглых скобок не вызвало затруднений - в обоих языках они выполняют сходные роли (хотя теперь я узнал несколько новых способов использования круглых скобок).
Что делать с точками с запятой? Очевидного ответа не было. Все что я мог сказать - этот знак определяет конец чего-то. Я пытался ставить точки с запятой там, где, как мне казалось, они должны быть. Но часто забывал об этом. Ничего не происходило. И очень скоро я совсем перестал использовать этот знак пунктуации. Я никогда не получал сообщения об ошибках, связанных с отстутсвием точек с запятой. Тем не менее, когда я делился своим кодом, некоторые разработчики выражали недовольство.
Наконец, я решил провести маленькое расследование.
Точки с запятой необходимы. Спасибо чему-то с названием Automatic Semicolon Insertion (ASI): JavaScript “добавляет” точки с запятой за Вас, если они пропущены (не в буквальном смысле, новые символы не появляются, но код работает так, будто все точки с запятой стоят на своих местах).
Но, это же JavaScript, а значит и тут не обошлось без забавных исключений из правил.
Точка с запятой обычно вставляается в соответствии с определенной логикой.
Например, код:
let semiColon = "?"
будет исполнен как:
let semiColon = "?";
И даже что-то подобное этому:
let semiColon
=
"?"
будет работать корректно. Спасибо, ASI!
Занимательное исключение возникнет, когда мы захотим вернуть значение:
let semiFunction = function(){
let semiColon = "?"
return
semiColon
}
К сожалению, этот код будет прочитан для исполнения следующим образом:
let semiFunction = function(){
let semiColon = "?"
return;
semiColon;
}
Эх, ASI, а я так тебе доверял!
Кажется, это наиболее часто встречаемая проблема, связанная с ASI, которую я смог понять. И я нашел материал, облегчающий понимание некоторых проблем автоматической подстановки точки с запятой.
Подведем итоги: ASI достаточно умен, но если Вы хотите полностью контролировать свой код, есть только один эффективный способ - нужно расставлять точки с запятой самостоятельно.
Тем более, когда результатом Вашего творчества любуются другие разработчики.
Спасибо за внимание.