I Shar

I Shar

мир глазами веб-разработчика

Нужна ли точка с запятой?

выясняем насколько нужна точка с запятой в конце строки в JavaScript

I Shar

время чтения 2 мин.

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

Тем более, когда результатом Вашего творчества любуются другие разработчики.


Спасибо за внимание.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.