Как и во многих других языках программирования, программа (сценарий) на языке JavaScript
это текст, состоящий из операторов, блоков, т. е. взаимосвязанных наборов
операторов, и комментариев. Операторы могут содержать переменные, константы
и выражения. Следующий пример начинается с определения функции, которое состоит из
блока, содержащего два оператора. За определением следуют два оператора, не образующих блока.
function convert(inches) {
cm = inches * 2.54; // Эти два оператора заключены в блок.
meters = inches / 39.37;
}
convert(inches); // Эти два оператора не образуют блока.
km = meters / 1000;
Как мы видим из этого примера, каждый оператор JavaScript начинается с новой строки (что не
обязательно, но рекомендуется) и заканчивается точкой с запятой (что также не обязательно, если
оператор является последним в строке). Блок это набор операторов, заключенный
в фигурные скобки {}.
Строка сценария, содержащая только точку с запятой, считается пустым
оператором, т. е. оператором, не выполняющим никакого действия. Тем не менее,
в некоторых случаях использование пустого оператора удобно, например:
while (i--) // Цикл состоит в уменьшении i до нуля,
; // поэтому его телом является пустой оператор.
Для удобства чтения программы и форматирования ее текста могут использоваться символы
пробела. Эти символы игнорируются всюду, кроме строковых констант и регулярных выражений,
в которых они являются значимыми. Символами пробела в JavaScript считаются следующие символы
Unicode:
- пробел (\u0020);
- табуляция (\u0009);
- вертикальная табуляция (\u000B);
- перевод формата (\u000C);
- неразрывный пробел (\u00A0).
Символы разрыва строки также используются для форматирования
текста, но они могут иметь значение и с точки зрения синтаксиса программы. Формальные правила
использования разрывов строк в JavaScript довольно сложны, но на практике достаточно помнить
только то, что обычно рекомендуется начинать новый оператор с новой строки. Символами разрыва
строки в JavaScript считаются следующие символы Unicode:
- перевод строки (\u000A);
- возврат каретки (\u000D);
- разделитель строк (\u2028);
- разделитель абзацов (\u2029).
Комментарии в JavaScript могут быть однострочными и многострочными. Однострочные комментарии
начинаются с символов // и продолжаются до конца текущей строки, как показано в приведенном
выше примере. Многострочные комментарии заключаются в маркеры /* и */, например:
/* Это пример комментария,
содержащего несколько строк. */
Многострочные комментарии не могут быть вложены друг в друга. Текст комментария полностью игнорируется
при выполнении программы.
Следующие имена являются ключевыми словами языка 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 и также
не должны употребляться в качестве идентификаторов в целях совместимости с будущими версиями
языка:
| 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 |
|
Идентификаторы используются в JavaScript в качестве имен переменных.
Они могут начинаться с латинской буквы, символа "$" (знак доллара) или символа "_"
(подчеркивание) и должны состоять из латинских букв, цифр и символов "$" и "_".
Знак доллара рекомендуется использовать только в идентификаторах программ, которые автоматически
генерируются другими программами. Идентификаторы не могут совпадать с зарезервированными словами.
Два идентификатора считаются равными, если они текстуально совпадают; это означает, что JavaScript
проводит различие между строчными и прописными буквами. Примеры синтаксически правильных идентификаторов:
| MyIdentfier |
another_identifier |
$id |
_function123 |
Переменные используются в качестве символических имен, принимающих
различные значения. Имена переменных задаются идентификаторами. Переменная
создается в момент ее декларации. JavaScript позволяет декларировать переменную двумя способами:
- С помощью ключевого слова var, например,
var x; или var
x = 21;.
- Просто присваиванием переменной значения, например
x = 21;.
Если декларация переменной не содержит присваивания ей значения, то ее значением считается
undefined. Мы можем проверять, определено ли значение переменной, и предпринимать
соответствующие действия. Пример:
var text;
if (text == undefined)
document.write("Текст не задан");
else
document.write("Текст:" + text);
В этом примере значение переменной text не определено, поэтому будет выполнен первый
оператор document.write.
В самом общем виде декларация переменных имеет вид:
var идентификатор[=инициализатор]?[,идентификатор[=инициализатор]?]?
Здесь инициализатор это любое выражение, значение которого присваивается
переменной при ее создании. Пример:
var a = 0, b, c = "текст", x, y = false;
Область действия переменной определяется положением ее декларации в тексте программы. Существуют
три типа исполняемого кода JavaScript, называемых контекстом исполнения:
- Глобальный контекст, т. е. исходный текст сценариев, не включая тела функций.
- Локальный контекст, т. е. исходный текст сценариев, являющийся телом функции,
а также аргумент конструктора встроенного объекта Function.
Точнее говоря, если последним параметром конструктора Function
является строка текста, то она интерпретируется как тело функции.
- Eval-контекст, т. е. аргумент метода eval.
Если параметром метода eval является строка
текста, то она интерпретируется как программа на языке JavaScript, имеющая тот же контекст,
в котором был вызван этот метод.
Иными словами, любая переменная, декларированная вне тела всех функций, является глобальной
и доступна всюду в тексте данной программы. Переменная, декларированная в теле функции, является
локальной и доступна только внутри тела этой функции. Об особенностях eval-контекста
см. описание метода eval.
Для декларации глобальных переменных ключевое слово var не обязательно. Однако,
оно обязательно при декларации локальных переменных.
Константы используются для задания постоянных значений. В JavaScript
имеется несколько типов констант, соответствующих его встроенным типам, а именно:
- нулевая константа null типа Null;
- логические константы true (истина) и false (ложь) типа
Boolean;
- строковые константы типа String, например, "Привет всем!";
- числовые константы типа Number, например, 21 или 3.1415926.
Особую группу констант составляют регулярные выражения, которые описаны в гл. 3.5.
Строковая константа это нуль или более символов Unicode, заключенных в
одинарные или двойные кавычки. Обычно строковые константы заключают в двойные кавычки, а одинарные
кавычки используются только для тех строк, которые сами содержат двойную кавычку. Примеры:
"Это строковая константа."
'"Эй, вы, там наверху!", - пела Алла Пугачева.'
Строка, не содержащая символов ('' или ""), называется пустой строкой. Символы Unicode,
входящие в состав строки, могут задаваться своим числовым кодом с помощью escape-последовательностей
вида \uXXXX, где XXXX шестнадцатеричный код символа Unicode. Символы
с кодами, меньше 256, могут задаваться escape-последовательностями вида \xXX,
где XX шестнадцатеричный код символа Unicode. Кроме того, несколько символов могут
обозначаться специальными escape-последовательностями:
| \0 |
\u0000 |
нуль (NUL) |
| \b |
\u0008 |
забой (BS) |
| \t |
\u0009 |
табуляция (HT) |
| \n |
\u000A |
перевод строки (LF) |
| \v |
\u000B |
вертикальная табуляция (VT) |
| \f |
\u000C |
перевод формата (FF) |
| \r |
\u000D |
возврат каретки (CR) |
| \" |
\u0022 |
двойная кавычка (") |
| \' |
\u0027 |
одинарная кавычка (') |
| \\ |
\u005C |
обратная косая черта (\) |
Пример строковых констант, содержащих специальные символы:
"Графический образ хранится в файле C:\\webstuff\\mypage\\gifs\\garden.gif."
"Эта строка заканчивается разрывом строки.\r\n"
Примечание. Internet Explorer распознает символ "\v" только в регулярных выражениях.
Числовые константы могут быть как целыми, так и плавающими. JavaScript не проводит
между ними различия и, в действительности, хранит все числа как плавающие. Целые числа могут
быть положительными, отрицательными и нулем. По системе счисления они могут быть десятичными,
восьмеричными и шестнадцатеричными:
- Десятичные числа это просто набор десятичных цифр, например: 1234, -256.
- Восьмеричные числа начинаются с 0 и состоят из цифр 0 7, например:
01234, -067.
- Шестнадцатеричные числа начинаются с 0x или 0X и состоят
из цифр 0 9 и букв A F в любом регистре, например: 0xA000, 0Xa000,
-0x1234.
Плавающие числа отличаются наличием или десятичной точки, или буквы e в любом
регистре, задающей степень десяти в научной нотации, или того и другого. Примеры плавающих чисел:
| 0.0001, .0001, 1e-4, 1.0E-4 |
// Четыре плавающих числа, равных друг другу |
| -1.23e2 |
// Плавающее число, равное -123 |