|
Как и во многих других языках программирования, программа (сценарий) на
языке 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.
Особую группу констант составляют регулярные выражения,
которые описаны здесь.
Строковая константа — это нуль или более символов
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:\\webmaster\\example\\example.gif."
"Эта строка заканчивается разрывом строки.\r\n"
Числовые константы могут быть как целыми, так и плавающими.
JavaScript не проводит между ними различия и, в действительности, хранит
все числа как плавающие. Целые числа могут быть положительными,
отрицательными и нулем. По системе счисления они могут быть десятичными,
восьмеричными и шестнадцатеричными:
- Десятичные числа — это просто набор десятичных цифр, например:
1256, -213.
- Восьмеричные числа начинаются с 0 и состоят из цифр
0 — 7, например: 03412, -071.
- Шестнадцатеричные числа начинаются с 0x или
0X и состоят из цифр 0 — 9 и букв A — F в
любом регистре, например: 0xA0A0, 0Xa001, -0x1342.
Плавающие числа отличаются наличием или десятичной точки, или буквы
e в любом регистре, задающей степень десяти в научной
нотации, или того и другого. Примеры плавающих чисел:
| 0.0001, .0001, 1e-4, 1.0E-4 |
// Четыре плавающих числа, равных друг другу |
| -1.23e2 |
// Плавающее число, равное -123 |
|