для чего нужна точка с запятой в программировании
Что такое точка с запятой в С++?
ОТВЕТЫ
Ответ 1
Точка с запятой является пунктуатором, см. 2.13 §1
Лексическое представление программ на С++ включает в себя ряд токенов предварительной обработки, которые используются в синтаксис препроцессора или преобразуются в токены для операторов и пунктуаторы
Ответ 2
Это часть синтаксиса и элемент из нескольких операторов. В EBNF:
Этот список не заполнен. Пожалуйста, см. Мой комментарий.
Ответ 3
Ответ 4
Ответ 5
Ответ 6
Точка с запятой обозначает последовательный состав. Он также используется для разграничения деклараций.
Ответ 7
Точка с запятой не дает определенного имени в стандарте С++. Это просто персонаж, который используется в некоторых произведениях грамматики (и это просто происходит в конце их довольно часто, поэтому «завершает» эти грамматические конструкции). Например, символ с запятой находится в конце следующих частей грамматики С++ (не обязательно полный список):
Ответ 8
Точка с запятой позволяет компилятору узнать, что она достигла конца команды AFAIK.
Ответ 9
Ответ 10
‘; часто используются для разграничения одного бита исходного кода на С++, что указывает на намеренное выделение его из следующего кода. Чтобы увидеть, как это полезно, предположим, что мы не использовали его:
Потому что. (drumroll please). в С++ смежные строковые литералы конкатенируются, поэтому программа анализируется следующим образом:
Учитывая, что это строковое литералирование конкатенации невероятно полезно для указания длинных строк (и даже более короткие многострочные строки в читаемом формате), мы, конечно же, не хотели бы предполагать, что такие строки не должны быть объединены. Следовательно, если точка с запятой ушла, то компилятор должен предположить, что конкатенация предназначена, хотя визуально макет кода выше означает в противном случае.
В любом случае, ‘;’ необходимо сообщить компилятору, что подразумевается завершение/разделение заявлений.
Ответ 11
В случае первых двух различий важно, поскольку пользователь определенная перегрузка влияет только на оператор, а не на пунктуацию.
Ответ 12
Он представляет собой конец инструкции С++.
Точка с запятой в Javascript
Нужно ли ставить точку с запятой в конце операторов в JavaScript?
Точки с запятой в JavaScript не обязательны. Точка с запятой в JavaScript разделяет сообщество: некоторые предпочитают использовать их всегда несмотря ни на что, а другим нравится их избегать.
Почему же JavaScript не требует строгого использования точки с запятой? Потому, что он сам виртуально добавляет их в нужные места. Процесс, который делает это, называется автоматической вставкой точки с запятой (Automatic Semicolon Insertion (ASI)) и описан в стандарте языка.
Важно знать правила использования точек с запятой, чтобы избежать написания кода, который будет генерировать ошибки из-за того, что ведет себя не так, как вы ожидаете.
В чем смысл автоматической вставки точки с запятой?
Принцип этой функции состоит в том, чтобы обеспечить некоторую снисходительность при оценке синтаксиса программы JavaScript путем концептуальной вставки пропущенных точек с запятой. Концептуально, так как программа успешно выполняет синтаксический анализ на основе этого правила, а не фактически изменяет код и добавляет точки с запятой.
Некоторые операторы ECMAScript должны заканчиваться точкой с запятой. Такие точки с запятой всегда могут быть явно указаны в исходном тексте.
Но далее говорится:
Однако для удобства в определенных ситуациях в исходном тексте могут быть опущены такие точки с запятой.
Вот простой пример кода, согласно спецификации, эти операторы переменных должны заканчиваться точкой с запятой:
Эти синтаксические ошибки исправлены при анализе, и код будет считаться следующим:
Правила автоматической вставки точки с запятой в JavaScript
Парсер JavaScript автоматически добавит точку с запятой, когда во время синтаксического анализа исходного кода обнаружит следующие конкретные ситуации:
Примеры кода, который делает не то, что вы ожидаете
Основываясь на этих правилах, вот несколько примеров:
Вы получите сообщение об ошибке: error: Uncaught TypeError: Cannot read property ‘forEach’ of undefined, потому что на основе 1 правила JavaScript пытается интерпретировать код как:
Такая строка (1 + 2).toString() выведет «3», но вот такой код:
Очень часто встречается проблема, связанная с ключевым словом return (правило 4):
Т.е. после ключевого слова return не должно быть перехода на новую строку. Но автоматическая вставка точки с запятой устраняет эту ошибку, преобразуя оператор return в следующий код:
Можно подумать, что этот код выведет в консоль 0:
но вместо этого он выведет 2, потому что JavaScript согласно правила 1 интерпретирует это как:
Вот еще один пример. В следующем фрагменте кода пропустили запятую после переменной a :
Вместо того, чтобы выдавать синтаксическую ошибку, точка с запятой добавляется следующим образом:
Эта проблема немного более тонкая. Включение точки с запятой приведет к объявлению переменной b в глобальной области видимости. Это вызовет ошибку «Uncaught ReferenceError: b is not defined» в строгом режиме.
Ключевым моментом является то, что эта может иметь очень тонкие побочные эффекты, которые трудно выявить в большом коде.
Будет рассматриваться интрепретатором (правило 2) как:
Когда не следует использовать точку с запятой?
Вот несколько случаев, когда точки с запятой не нужны:
Но требуется согласно стандарта для
После объявления функции точка с запятой также не нужна:
Но нужна после объявления функционального выражения:
Технически это недопустимая программа, так как конечная точка с запятой отсутствует, но ASI (автоматическая вставка точки с запятой) обработает ее в вид:
Итоги
Можно писать и с использованием точек с запятой и без. В разных компаниях свои стили. Так в требованиях по стилю кодированя на Javascript в Google использование автоматической вставки точки с запятой запрещено. Некоторые компании опускают необязательные точки с запятой.
Если же вы собираетесь писать свой JavaScript код без дополнительных точек с запятой хорошо бы знать, что делает ASI. Например, сжатие или минификация может привести к тому, что ваш код может выдасть ошибку, потому что эти программы часто полагаются на точки с запятой. Если пишете без точек с запятой, то не никогда не начинайте строку со скобок, они могут быть объединены с предыдущей строкой для формирования вызова функции или ссылки на элемент массива или же перед такой строкой ставьте точку с запятой:
Кроме того, может быть труднее отлаживать без точек с запятой, поскольку ваш код может объединяться вместе, а вы этого не осознаёте. Если вы поместите разрыв строки там, где его не должно быть, ASI может вмешаться и принять точку с запятой, даже если ее не должно быть.
Точки с запятой
Со времен появления Алгола точки с запятой были частью почти каждого современного языка. Все мы использовали их считая это само собой разумеющимся. Однако я полагаю, что больше ошибок компиляции происходило из-за неправильно размещенной или отсутствующей точки с запятой, чем в любом другом случае. И если бы мы получали один пенни за каждое дополнительное нажатие клавиши, использованное программистами для набора этих маленьких мошенников, мы смогли бы оплатить национальный долг.
Будучи воспитанным на Фортране, я потратил много времени чтобы привыкнуть к использованию точек с запятой и сказать по правде я никогда полностью не понимал почему они необходимы. Так как я программирую на Паскале и так как использование точек с запятой в Паскале особенно мудрено, этот один небольшой символ является моим наибольшим источником ошибок.
Когда я начал разработку KISS, я решил критически относиться к каждой конструкции в других языках и попытаться избежать наиболее общих проблем, происходящих с ними. Это ставит точку с запятой очень высоко в моем хит-листе.
Чтобы понять роль точки с запятой, вы должны изучить краткую предисторию.
Ранние языки программирования были строчно-ориентированными. В Фортране, например, различные части утверждения занимали определенные столбцы и поля, в которых они должны были располагаться. Так как некоторые утверждения были слишком длинными для одной строки, существовал механизм «карта продолжения» («continuation card»), позволяющий компилятору знать, что данная карта все еще является частью предыдущей строки. Механизм дожил до наших дней, хотя перфокарты теперь – дела отдаленного прошлого.
Когда появились другие языки, они также приняли различные механизмы для работы с многострочными операторами. Хороший пример – BASIC. Важно осознать, тем не менее, что механизм Фортрана был затребован не столько строчной ориентацией языка, сколько ориентацией по столбцам. В тех версиях Фортрана, где разрешен ввод в свободной форме, он больше не нужен.
Когда отцы Алгола представили этот язык, они хотели уйти от строчно-ориентированных программ подобных Фортрану или Бейсику и разрешить ввод в свободной форме. Это дало возможность связывать множество утверждений в одну строку как например:
В случаях подобных этому, точка с запятой почти обязательна. Та же самая строка без точек с запятой выглядит просто «странной»:
Я полагаю, что это главная. возможно единственная. причина точек с запятой: не давать программам выглядеть странно.
Но идея со связыванием множества утверждений вместе в одну строку в лучшем случае сомнительная. Это не очень хороший стиль программирования и возвращение назад к дням, когда считалось важным сэкономить карты. В наши дни CRT и выровненного кода ясность программ гораздо лучше обеспечивается сохранением раздельных утверждений. Все-таки хорошо иметь возможность множественных утверждений, но это позор – оставлять программистов в рабстве у точек с запятой только чтобы этот редкий случай не «выглядел странно».
Когда я начинал KISS, я попытался держать глаза открытыми. Я решил, что буду использовать точки с запятой когда это станет необходимо для синтаксического анализатора, но только тогда. Я рассчитывал, что это случится примерно в то время, когда я добавил возможность разложения утверждений на несколько строк. Но как вы можете видеть это никогда не случилось. Компилятор TINY совершенно счастлив анализировать наиболее сложные утверждения, разложенные на любое число строк, без точек с запятой.
Однако, есть люди, которые использовали точки с запятой так долго, что они чувствуют себя без них голыми. Я один из них. Как только KISS стал достаточно хорошо определен, я попробовал написать на этом языке несколько программ-примеров. Я обнаружил, к своему ужасу, что пытаюсь в любом случае расставлять точки с запятой. Так что теперь я стою перед перспективой нового потока ошибок компилятора, вызванных нежелательными точками с запятой. Тьфу!
Возможно более важно, что есть читатели, которые разрабатывают свои собственные языки, которые могут включать точки с запятой или которые хотят использовать методы из этого руководства для компиляции стандартных языков типа C. В обоих случаях, нам необходима возможность работать с точками с запятой.
Читайте также
Точки монтирования
Точки монтирования NT 5.0 разрешает монтирование (или подключение) одной файловой системы в точке монтирования, находящейся в другой файловой системе. Обычно управление точками монтирования является прерогативой администратора системы, но эти же задачи можно решать и
Точки пояснения
Точки пояснения Это ссылки, содержащие ответы на вопросы, которые, возможно, возникнут у посетителей в процессе покупки. Каждая точка пояснения ссылается либо на путевую точку, либо на точку конверсии (см. ниже). Они помогают посетителю не сбиться с
Путевые точки
Путевые точки Эти точки дают дополнительный стимул для покупателей. Они одновременно способствуют и достижению целей продавца, и удовлетворению потребностей целевой группы покупателей. Путевые точки помогают процессу продаж и имеют большое значение для конверсии
§ 105. Трагедия запятой
§ 105. Трагедия запятой 14 июня 2004Американский инженер Шолес с коллегами занимался созданием пишущих машин с конца 1860-х.Практически все источники пересказывают один и тот же миф: в первых моделях литерные рычаги залипали от быстрой печати, поэтому Шолес перемешал все таким
Кольца и точки
Кольца и точки Кольцо Кольцо представляет собой примитив, ограниченный двумя концентрическими окружностями различного диаметра (рис. 2.23). Рис. 2.23. Параметры, используемые при построении кольцаКоманда, создающая кольцо, имеет два наименования: DONUT и DOUGHNUT. Поэтому, чтобы
Указание внутренней точки
Указание внутренней точки Чтобы определить контур указанием внутренней точки, нужно щелкнуть в окне Hatch and Gradient (Штриховка и градиент) на кнопке Add: Pick points (Добавить: указание точек), после чего диалоговое окно скроется и вам необходимо будет указать точку, принадлежащую
7.5.3. Точки монтирования
7.5.3. Точки монтирования В файле /proc/mounts находится перечень смонтированных файловых систем. Каждая строка соответствует одному дескриптору монтирования и содержит имя устройства, имя точки монтирования и прочие сведения. Та же самая информация хранится в обычном файле
Пользовательские точки сохранения
Пользовательские точки сохранения Операторы пользовательских точек сохранения (user savepoints), также называемые вложенными транзакциями, позволяют вам «упаковать» группы операций внутри транзакции и отмечать их, если пересылка в базу данных была успешной. Если позже в
«Точки сохранения» в PSQL
«Точки сохранения» в PSQL Добавление возможностей создания пользовательских точек сохранения в Firebird 1.5 позволяет приложению управлять область действия отката транзакции. В PSQL всегда была возможность обработки исключений. Подробности см. в главе
Кольца и точки
Кольца и точки Кольцо Кольцо представляет собой примитив, ограниченный двумя концентрическими окружностями различного диаметра (рис. 2.23). Рис. 2.23. Параметры, используемые при построении кольцаКоманда, создающая кольцо, имеет два наименования: DONUT и DOUGHNUT. Поэтому, чтобы
Указание внутренней точки
Указание внутренней точки Чтобы определить контур указанием внутренней точки, нужно щелкнуть в окне Hatch and Gradient (Штриховка и градиенты) на кнопке Add: Pick points (Добавить: указание точек), после чего диалоговое окно скроется и вам необходимо будет указать точку, принадлежащую
Выбор точки съемки
Выбор точки съемки Очень эффектные кадры получаются, если снимать виды сверху. Владельцы цифровых камер среднего качества очень быстро замечают, что на дальних планах получаются неприемлемые искажения. При съемке сверху искажения не так заметны. Полезно также пробовать
У6.1 Точки
У6.1 Точки Написать спецификацию, задающую абстрактный тип данных ТОЧКА (POINT), моделирующий точки на плоскости в планиметрии. Эта спецификация должна отражать следующие аспекты: декартовы и полярные координаты, повороты, параллельные переносы, расстояние от начала
Василий Щепетнёв: Принцип одной запятой Василий Щепетнев
Василий Щепетнёв: Принцип одной запятой Василий Щепетнев Опубликовано 02 декабря 2010 года Как всякий самоучка, я обречен изобретать велосипеды. Плохого в том ничего нет, однако ж порой досадно: как много усилий затрачивается там, где нужны заемные
Почему я должен использовать точку с запятой после каждой функции в javascript?
Я видел, как разные разработчики включают точки с запятой после функций в javascript, а некоторые нет. Что является лучшей практикой?
9 ответов
Грамматика FunctionDeclaration описана в спецификация так:
Там нет точки с запятой грамматически, но может возникнуть вопрос, почему?
Термины «объявление функции» и «оператор функции» часто ошибочно используются взаимозаменяемо, потому что в спецификации ECMAScript не описан оператор функции, однако есть некоторые реализации, которые включают оператор функции в свою грамматику, в частности, Mozilla, но опять же это это нестандартно.
Если вы опустите точку с запятой после первой функции в приведенном выше примере, вы получите совершенно нежелательные результаты:
Первая функция будет выполнена немедленно, потому что круглые скобки, окружающие вторую, будут интерпретированы как Arguments вызова функции.
Точка с запятой после функции не является необходимой, используя ее или нет, не вызывает ошибок в вашей программе. однако, если вы планируете минимизировать свой код, то лучше использовать точку с запятой после функций. скажем, например, у вас есть код, подобный приведенному ниже
Когда вы минимизируете оба, вы получите следующее в качестве вывода
Обратите внимание, что комментарии только для иллюстрации
Рекомендуется оставлять точки с запятой ; после фигурных скобок. Они считались лучшей практикой в течение многих лет.
Как минимизирование Javascript, помогает немного уменьшить размер файла.
Но что касается лучшей практики и ответа выше, не рекомендуется использовать его после тега функции.
Если вы НЕ используете точки с запятой, и если вы хотите минимизировать (как многие разработчики любят делать, если их сайт обслуживает много JavaScript), вы можете получить всевозможные ошибки / предупреждения.
Когда я минимизировал свои скрипты, я понял, что мне нужно использовать точку с запятой для функций, которые начинаются со знака равенства. если вы определяете функцию как var, да, вам нужно использовать точку с запятой.
Нужна точка с запятой
Не нужно ставить точку с запятой
Это на самом деле больше, чем просто вопрос соглашения или последовательности.
Я вполне уверен, что не ставит точки с запятой после каждого оператора, что замедляет внутренний синтаксический анализатор, потому что он должен выяснить, где находится конец оператора. Хотелось бы, чтобы у меня было несколько удобных цифр, чтобы вы это подтвердили, но, может быть, вы можете сами это погуглить. 🙂
Кроме того, когда вы сжимаете или минимизируете код, отсутствие точек с запятой может привести к уменьшенной версии вашего скрипта, которая не будет выполнять то, что вы хотели, потому что все пробелы исчезают.
На самом деле просто зависит от ваших предпочтений. Мне нравится заканчивать строки кода точкой с запятой, потому что я привык к Java, C ++, C # и т. Д., Поэтому я использую те же стандарты для кодирования в javascript.
Обычно я не заканчиваю объявления функций точкой с запятой, но это мое предпочтение.
Браузеры будут работать в любом случае, но, возможно, когда-нибудь они придумают более строгие стандарты, регулирующие это.
Пример кода я бы написал:
Я использую их после объявления функции как переменной:
Но не после определений в классическом стиле:
Пунктуация в программах на Паскале
Слова begin и end не являются операторами – они служат знаками пунктуации. Слово begin выступает в качестве левой, а end – правой скобки. Так как они сами знаки пунктуации, то точка запятой после begin и перед end не обязательна. В программах на Паскаль слова begin и end используются преимущественно для образования составных операторов. Составной оператор может быть использован в любом месте, где мог бы быть использован простой оператор. Пример составного оператора:
Слова в других операторах также действуют как знаки пунктуации.
Слова if, then, else выступают внутри оператора в качестве знаков пунктуации.
Операторы разделены знаками пунктуации, поэтому расположение программы на странице с точки зрения компилятора значения не имеет. Вполне достаточно придерживаться двух правил:
В остальном компилятору все равно, как будет расположена программа, однако, это совсем не безразлично для программиста. Польза отступов в прояснении структуры программы. Взгляды на выбор отступов весьма различны, но все согласны в одном – отступы должны делать структуру программы максимально наглядной.
Слова program, const, var, begin, end, а также множество других называются зарезервированными словами. Зарезервированные слова нельзя расширять (например, constant будет ошибкой) и сокращать (например, prog также будет ошибкой).
Использовать в программном коде на Pascal можно как прописные, так и строчные буквы, а также их чередовать. Однако в строках (тип данных) разница между прописными и строчными буквами существует.