Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
Этот раздел описывает синтаксис JavaScript. Исходный код ECMAScript скриптов сканируется слева направо и преобразуется в последовательность найденных элементов в токены, управляющие символы, окончания строк, комментарии или пробелы.
ECMAScript также определяет ключевые слова и литералы и имеет указания для автоматической вставки точек с запятой к концу инструкции.
Спецсимволы не имеют визуального представления, однако используются для управления интерпретацией текста.
| U+200C | Zero width non-joiner | <ZWNJ> | Размещается между символами во избежание их соединений в лигатуры для некоторых языков (Wikipedia) |
| U+200D | Zero width joiner | <ZWJ> | Размещается между символами, которые не могли бы нормально объединиться для того, чтобы символы отрисовывались, используя их соединительную форму в некоторых языках (Wikipedia) |
| U+FEFF | Byte order mark | <BOM> | Используется вначале скрипта для того, чтобы пометить Юникод и порядок байтов (Wikipedia) |
Пробельные символы улучшают читабельность исходного текста и разделяет токены друг от друга. Пробельные символы обычно не обязательны для функционирования кода. Утилиты для уменьшения объёма кода часто удаляют пробельные символы, чтобы уменьшить объем кода.
| U+0009 | Character tabulation | <HT> | Горизонтальная табуляция | \t |
| U+000B | Line tabulation | <VT> | Вертикальная табуляция | \v |
| U+000C | Form feed | <FF> | Символ контроля разрыва страницы (Wikipedia) | \f |
| U+0020 | Space | <SP> | Обычный пробел | |
| U+00A0 | No-break space | <NBSP> | Обычный пробел без точки, на которой может произойти разрыв страницы | |
| Others | Other Unicode space characters | <USP> | Другие символы в Википедии |
В дополнение к пробельным символам, символы окончания строк тоже используются для читабельности исходного кода. Однако, в некоторых случаях, символы окончания строк могут влиять на выполнение JavaScript-кода, т.к. есть некоторые места, где они запрещены.
Окончания строк также затрагивают процесс автоматического проставления точки с запятой. Также окончания строк попадают под условия регулярных выражений при поиске \s класса.
В ECMAScript, в качестве окончания строк можно использовать только ниже перечисленные Юникод символы. Другие символы окончания строк будут интерпретированы, как пробельные символы (например, Next Line, NEL, U+0085 будут интерпретироваться, как пробельные символы).
| U+000A | Line Feed | <LF> | Новая строка в UNIX системах. | \n |
| U+000D | Carriage Return | <CR> | Новая строка в Commodore и ранних Mac systems. | \r |
| U+2028 | Line Separator | <LS> | Wikipedia | |
| U+2029 | Paragraph Separator | <PS> | Wikipedia |
Комментарии используются для добавления подсказок, заметок, предложений или предупреждений. Они могут упростить чтение и понимание кода. Также они могут быть использованы для предотвращения выполнения кода (этот приём практикуется при отладке кода).
В JavaScript есть несколько способов указать комментарии в коде.
Первый способ // комментарий; в этом случае весь текст в строке после двойного слеша будет комментарием, например:
Второй способ - это /* */, такой способ более гибок, чем первый.
Например, вы можете использовать его в одной строке:
Либо вы можете сделать многострочный комментарий, как показано здесь:
Также, если пожелаете, то вы можете использовать такое комментирование посреди строки кода. Хотя это может ухудшить читабельность кода:
Чтобы отключить выполнение кода, просто оберните код в комментарий, как здесь:
В этом случае console.log() никогда не выполнится, пока он внутри комментария. Таким способом можно отключить любое количество строк кода.
Третий специализированный синтаксис комментариев, шебанг комментарий, в процессе стандартизации в ECMAScript (смотреть Hashbang Grammar proposal).
Шебанг комментарий ведёт себя точно также как и однострочный (//) комментарий. Вместо этого, он начинается с #! и действителен только в самом начале скрипта или модуля. Обратите внимание, что никакие пробелы не разрешены перед #!. Комментарий состоит из всех символов после #! до конца первой строки; только такой комментарий разрешён.
Шебанг комментарий определяет путь к JavaScript интерпретатору, скрипт которого вы хотите выполнить. Пример, как это работает:
Примечание: Hashbang comments in JavaScript mimic shebangs in Unix used to run files with proper interpreter.
Предупреждение: Although BOM before hashbang comment will work in a browser it is not advised to use BOM in a script with hasbang. BOM will not work when you try to run the script in Unix/Linux. So use UTF-8 without BOM if you want to run scripts directly from shell.
Для определения JavaScript интерпретатора используйте только #! . В любых других случаях используйте // (или многострочный комментарий).
Следующие ключевые слова зарезервированы на будущее ECMAScript спецификацией. За ними сейчас не стоит никакой функциональности, но она может появиться в будущих версиях, поэтому эти ключевые слова не могут быть использованы, как идентификаторы. Эти ключевые слова не могут быть использованы даже в strict или non-strict режимах.
Следующие ключевые слова зарезервированы для кода, который выполняется в strict режиме:
Перечисленные ниже ключевые слова зарезервированы для старых версий ECMAScript спецификаций (ECMAScript от 1 по 3).
К тому же, литералы null, true, и false зарезервированы в ECMAScript для их обычной функциональности.
Зарезервированные слова действительно применяются только к идентификаторам (vs. IdentifierNames). Как описано в es5.github.com/#A.1, это все имена IdentifierNames, которые не исключают зарезервированных слов.
С другой стороны, следующее выражение неправильно, т.к. Идентификатор IdentifierName не содержит зарезервированных слов. Идентификаторы используются для FunctionDeclaration, FunctionExpression, VariableDeclaration и т.п., в то время, как IdentifierNames используются для MemberExpression, CallExpression и т.п.
Подробнее о nullnull.
Подробнее о Boolean.
Имейте в виду, что литералы десятичных чисел могут начинаться с нуля (0), за которым следует другое десятичное число, но в случае, если число начинается с нуля и за ним идёт цифра меньше 8, то число будет распознано как восьмеричное. This won't throw in JavaScript, see Firefox bug 957513. See also the page about parseInt().
Синтаксис двоичных чисел состоит из цифры ноль, за которой следует маленькая или большая латинская буква "B" (0b или 0B). Этот синтаксис новый и появился только в ECMAScript 2015, пожалуйста посмотрите таблицу совместимости с браузерами. Это может производить ошибку SyntaxError: "Missing binary digits after 0b", Если цифры не 0 или 1.
Восьмеричный числовой синтаксис, который использует 0 с последующей, в нижнем или верхнем регистре, латинскую букву "О" (0o или 0O). Этот синтаксис появился в ECMAScript 2015, пожалуйста, посмотрите таблицу совместимости с браузерами. Это может производить ошибку SyntaxError: "Missing octal digits after 0o", если цифры не между 0 и 7.
Шестнадцатеричный числовой синтаксис, который использует 0 с последующей, в нижнем или верхнем регистре, латинскую букву "X" (0x или 0X). Если числа после 0x вне диапазона (0123456789ABCDEF), то может последовать за этим SyntaxError: "Identifier starts immediately after numeric literal".
Смотрите также Object и Object initializer для получения более подробной информации.
Смотрите также Array для получения более подробной информации.
Для экранирования Юникод символов обязательно нужно указать по крайней мере 4 символа после \u.
Новое в ECMAScript 2015. With Unicode code point escapes, any character can be escaped using hexadecimal numbers so that it is possible to use Unicode code points up to 0x10FFFF. With simple Unicode escapes it is often necessary to write the surrogate halves separately to achieve the same.
See also String.fromCodePoint() or String.prototype.codePointAt().
Смотрите также RegExp для получения более подробной информации.
Смотрите также template strings для получения более подробной информации.
Некоторые JavaScript условия должны быть завершены точкой с запятой и поэтому на них влияет автоматическая вставка точки с запятой (ASI):
1. Точка с запятой ставится до, когда ограничитель строки или "}" is encountered that is not allowed by the grammar.
2. Точка с запятой ставится в конце, когда обнаружен конец вводимой строки токенов и парсер is unable to parse the single input stream as a complete program.
Here ++ is not treated as a postfix operator applying to variable b, because a line terminator occurs between b and ++.
3. Точка с запятой вставляется в конце, когда согласно инструкции с ограниченным производством в грамматике следует ограничитель строки. Эти утверждения с правилами «no LineTerminator here» здесь:
| ECMAScript® 2027 Language Specification |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 17 дек. 2024 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.