Как и во многих других языках программирования, программа (сценарий) на языке JavaScript это текст, состоящий из операторов, блоков, т. е. взаимосвязанных наборов операторов, и комментариев. Операторы могут содержать переменные, константы и выражения. Следующий пример начинается с определения функции, которое состоит из блока, содержащего два оператора. За определением следуют два оператора, не образующих блока.
function convert(inches) < cm = inches * 2.54; // Эти два оператора заключены в блок. meters = inches / 39.37; >convert(inches); // Эти два оператора не образуют блока. km = meters / 1000;
Как мы видим из этого примера, каждый оператор JavaScript начинается с новой строки (что не обязательно, но рекомендуется) и заканчивается точкой с запятой (что также не обязательно, если оператор является последним в строке). Блок это набор операторов, заключенный в фигурные скобки <>.
while (i—) // Цикл состоит в уменьшении i до нуля, ; // поэтому его телом является пустой оператор.
Для удобства чтения программы и форматирования ее текста могут использоваться символы пробела. Эти символы игнорируются всюду, кроме строковых констант и регулярных выражений, в которых они являются значимыми. Символами пробела в JavaScript считаются следующие символы Unicode:
30 Структура программ на Javascript
- пробел (u0020);
- табуляция (u0009);
- вертикальная табуляция (u000B);
- перевод формата (u000C);
- неразрывный пробел (u00A0).
Символы разрыва строки также используются для форматирования текста, но они могут иметь значение и с точки зрения синтаксиса программы. Формальные правила использования разрывов строк в JavaScript довольно сложны, но на практике достаточно помнить только то, что обычно рекомендуется начинать новый оператор с новой строки. Символами разрыва строки в JavaScript считаются следующие символы Unicode:
- перевод строки (u000A);
- возврат каретки (u000D);
- разделитель строк (u2028);
- разделитель абзацов (u2029).
3.2.2. Комментарии
Комментарии в JavaScript могут быть однострочными и многострочными. Однострочные комментарии начинаются с символов // и продолжаются до конца текущей строки, как показано в приведенном выше примере. Многострочные комментарии заключаются в маркеры /* и */, например:
/* Это пример комментария, содержащего несколько строк. */
Многострочные комментарии не могут быть вложены друг в друга. Текст комментария полностью игнорируется при выполнении программы.
3.2.3. Зарезервированные слова
Следующие имена являются ключевыми словами языка JavaScript и не могут употребляться в качестве идентификаторов:
| break | delete | function | return | typeof |
| case | do | if | switch | var |
| catch | else | in | this | void |
| continue | finally | instanceof | throw | while |
| default | for | new | try | with |
Основы синтаксиса JAVASCRIPT. Структура кода. Инструкции. Режим use strict. Уроки JAVASCRIPT с нуля.
Следующие имена являются ключевыми словами в предлагаемых расширениях языка JavaScript и также не должны употребляться в качестве идентификаторов в целях совместимости с будущими версиями языка:
| absract | double | implements | private | throws |
| boolean | enum | import | protected | transient |
| byte | export | int | public | volatile |
| char | extends | interface | short | |
| class | final | long | static | |
| const | float | native | super | |
| debugger | goto | package | synchronized |
3.2.4. Идентификаторы
Идентификаторы используются в JavaScript в качестве имен переменных. Они могут начинаться с латинской буквы, символа «$» (знак доллара) или символа «_» (подчеркивание) и должны состоять из латинских букв, цифр и символов «$» и «_». Знак доллара рекомендуется использовать только в идентификаторах программ, которые автоматически генерируются другими программами. Идентификаторы не могут совпадать с зарезервированными словами. Два идентификатора считаются равными, если они текстуально совпадают; это означает, что JavaScript проводит различие между строчными и прописными буквами. Примеры синтаксически правильных идентификаторов:
3.2.5. Переменные
3.2.5.1. Декларация переменных
Переменные используются в качестве символических имен, принимающих различные значения. Имена переменных задаются идентификаторами. Переменная создается в момент ее декларации. JavaScript позволяет декларировать переменную двумя способами:
- С помощью ключевого слова var, например, var x; или var x = 21; .
- Просто присваиванием переменной значения, например x = 21; .
Если декларация переменной не содержит присваивания ей значения, то ее значением считается undefined. Мы можем проверять, определено ли значение переменной, и предпринимать соответствующие действия. Пример:
var text; if (text == undefined) document.write(«Текст не задан»); else document.write(«Текст:» + text);
В этом примере значение переменной не определено, поэтому будет выполнен первый оператор .
В самом общем виде декларация переменных имеет вид:
var идентификатор[=инициализатор]?[,идентификатор[=инициализатор]?]?
Здесь инициализатор это любое выражение, значение которого присваивается переменной при ее создании. Пример:
var a = 0, b, c = «текст», x, y = false;
3.2.5.2. Область действия переменных
Область действия переменной определяется положением ее декларации в тексте программы. Существуют три типа исполняемого кода JavaScript, называемых контекстом исполнения:
- Глобальный контекст, т. е. исходный текст сценариев, не включая тела функций.
- Локальный контекст, т. е. исходный текст сценариев, являющийся телом функции, а также аргумент конструктора встроенного объекта Function. Точнее говоря, если последним параметром конструктора Function является строка текста, то она интерпретируется как тело функции.
- Eval-контекст, т. е. аргумент метода eval. Если параметром метода eval является строка текста, то она интерпретируется как программа на языке JavaScript, имеющая тот же контекст, в котором был вызван этот метод.
Иными словами, любая переменная, декларированная вне тела всех функций, является глобальной и доступна всюду в тексте данной программы. Переменная, декларированная в теле функции, является локальной и доступна только внутри тела этой функции. Об особенностях eval-контекста см. описание метода eval.
Для декларации глобальных переменных ключевое слово var не обязательно. Однако, оно обязательно при декларации локальных переменных.
3.2.6. Константы
Константы используются для задания постоянных значений. В JavaScript имеется несколько типов констант, соответствующих его встроенным типам, а именно:
- нулевая константа null типа Null;
- логические константы true (истина) и false (ложь) типа Boolean;
- строковые константы типа String, например, «Привет всем!»;
- числовые константы типа Number, например, 21 или 3.1415926.
Особую группу констант составляют регулярные выражения, которые описаны в гл. 3.5.
3.2.6.1. Строковые константы
Строковая константа это нуль или более символов Unicode, заключенных в одинарные или двойные кавычки. Обычно строковые константы заключают в двойные кавычки, а одинарные кавычки используются только для тех строк, которые сами содержат двойную кавычку. Примеры:
«Это строковая константа.» ‘»Эй, вы, там наверху!», — пела Алла Пугачева.’
Строка, не содержащая символов (» или «»), называется пустой строкой. Символы Unicode, входящие в состав строки, могут задаваться своим числовым кодом с помощью escape-последовательностей вида uXXXX, где XXXX шестнадцатеричный код символа Unicode. Символы с кодами, меньше 256, могут задаваться escape-последовательностями вида xXX, где XX шестнадцатеричный код символа Unicode. Кроме того, несколько символов могут обозначаться специальными escape-последовательностями: