Документация JavaScript
| Документация DHTML | Документация Smarty | SVG/VML Графика и JavaScript
| Документация bash |
Глава 3.2. Основные понятия
3.2.1. Структура программ на языке JavaScript
Как и во многих других языках программирования, программа (сценарий) на языке 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).
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 и также не должны употребляться в качестве идентификаторов в целях совместимости с будущими версиями языка:
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 проводит различие между строчными и прописными буквами. Примеры синтаксически правильных идентификаторов:
MyIdentfier | another_identifier | $id | _function123 |
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);
В этом примере значение переменной text не определено, поэтому будет выполнен первый оператор document.write.
В самом общем виде декларация переменных имеет вид:
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-последовательностями:
\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" только в регулярных выражениях.
3.2.6.2. Числовые константы
Числовые константы могут быть как целыми, так и плавающими. 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 |