1. Глава. Описание
языка.
1.1 Типы данных, переменные и литералы.
Типы данных. JavaScript распознает следующие типы:
- Numbers, такие как 17 или 3.1415928
- Logical (Boolean) , true или false
- Strings, такие как "Hello !"
- null, специальное ключевое слово для обозначения пустого
значения.
Нет явного различия между целыми и действительными
данными. Нет явного типа date, но есть возможность использовать
объект date и его методы для обращения с датами.
1.1.1 Преобразование типов данных.
В JavaScript необязательно определять тип данных
данных и они преобразуются автоматически в процессе выполнения
программы. Так, например, можно определить переменную var str15 =
42, а позже можно присвоить этой же переменной строковое значение
str15 = "This is new value..." и это не вызовет ошибки. В
выражениях, где используются одновременно числовые и строковые
значения, JavaScript преобразует числовое значение к строковому.
Например, в следующих операторах
x = "This is new value - " + 42
y = 42 + " - is new value"
первый возвратит строку " This is new value - 42",
второй - "42 -is new value".
В JavaScript имеются специальные функции для
манипулирования строковыми и числовыми значениями:
- - eval - пытается конвертировать строковое значение к типу
number;
- - parseInt - преобразует строковое значение в целое, если
это возможно;
- - parseFloat - преобразует строковое значение в число с
плавающей запятой, если это возможно.
1.1.2 Переменные.
Имена переменных в JavaScript должны начинаться с
буквы или подчеркивания("_"), последующие символы могут быть также и
цифрами (0-9). Следует учитывать, что JavaScript чувствителен к
регистру. Некоторые примеры правильных имен - Number_hits, temp99, и
_name.
Переменные можно объявить двумя способами: просто
назначая это значение, например, x = 42 или же с ключевым словом
var, например, var x = 19.
Различают глобальные и локальные переменные. Если
переменная объявлена вне функции, то это глобальная переменная и ее
можно использовать везде в текущем документе. Локальная переменная
доступна только в пределах функции. Использование var необязательно,
но нужно использовать это ключевое слово, если желаете иметь
локальную переменную с таким же именем как у глобальной. Имеется
доступ к глобальным переменным одного окна или фрейма в другом окне
или фрейме через их имя. Например, если переменная phoneNumber
обьявлена в родительском фрейме, можно обратиться к этой переменной
из дочернего фрейма как parent.phoneNumber.
1.1.3 Литералы.
Литералы - это константы различных типов.
Целые.
Целые могут выражаться десятичным
числом (основание системы счисления-10), шестнадцатеричным (16), и
восьмеричным (8). Различаются он следующим образом: десятичное
обязательно начинается не с нуля, предшествующий нуль означает, что
это восьмеричное число, а предшествующие 0x ( или 0X ) означают
шестнадцатеричное. Шестнадцатеричное целое может включать цифры
(0-9) и символы a-f и A-F. Восьмеричное целое только цифры 0-7.
Некоторые примеры целых литералов: 17, 0xFFF, и -345.
Литералы с плавающей точкой.
Они могут иметь
следующие части: десятичное целое число, десятичная точка("."),
дробная часть (десятичное целое), признак порядка ("e" или "E") и
порядок (десятичное целое со знаком). Некоторые примеры литералов с
плавающей точкой - 3.1415, -3.1E1, .107e2, и 2E-10.
Литералы Boolean.
Тип Boolean имеет два
значение: true и false.
Строковые литералы.
Это ноль или больше
символов, заключенных в двойные ( " ) или одинарные кавычки (').
Примеры строковых литералов: "row" , 'row' , "4321" , "one line \n
another line" В дополнение к обычным символам, можно также включить
специальные символы, как это показано в последнем элементе. В
следующую таблицу внесены специальные символы, которые можно
использовать в JavaScript.
| Символ |
Значение |
| \b
|
забой
|
| \f
|
перевод страницы
|
| \n
|
новая строка
|
| \r
|
возврат каретки |
| \t
|
табуляция
|
| \\
|
двойной обратный слеш
|
Для того чтобы использовать обратный слеш внутри
строки необходимо использовать двойной обратный слеш. Например,
чтобы определить путь к файлу (c:\temp) как строку следует указать
var home = "c:\\temp"
1.2 Выражения и простые
операторы.
Выражение - любой, имеющий значение набор литералов,
переменных, операторов, и выражений, который приводит к
единственному значению. Значение может быть числом, строкой или
Boolean. Специальное ключевое слово null обозначает пустое значение.
Следует различать null и переменные, которым не были присвоены
значения, последние не определены и будут вызывать ошибку во время
выполнения, если используются как числовые переменные. Однако
элементы массива, которым не было присвоено значение оцениваются как
false. В следующем примере исполняется оператор str="Hello !",
потому что элемент массива не определен: myArray=new Array() if
(!myArray["notThere"]) str="Hello !"
1.2.1 Условные выражения.
Условное выражение может иметь одно из двух значений,
в зависимости от условия.
Его синтаксис таков: (condition)? value1: value2
Если условие (condition) истинно, выражение имеет
значение value1, иначе - value2. Можно использовать условное
выражение везде, где допустимо стандартное выражение. Например,
status = (age >= 50) ? "old" : "young"
1.2.2 Оператор
присваивания.
Оператор присваивания (=) присваивает значение
правого операнда левому. То есть x =y присваивает x значение y.
Существует сокращенная форма оператора присваивания, общий вид
которой:
<переменная> <знак операции> =
<выражение>
при этом подразумевается выполнение следующего
оператора присваивания:
<переменная>=<переменная><знак
операции><выражение>
Знаком операции могут быть: +(сложение),
-(вычитание), *(умножение), /(деление), %(деление по модулю),
<<(сдвиг влево), >>(сдвиг вправо), >>>(сдвиг
вправо с заполнением нулями), &(побитовое И), ^(побитовое
исключающее ИЛИ), |(побитовое ИЛИ).
1.2.3 Операторы cравнения.
Операторы сравнения сравнивают операнды и возвращают
логическое значение, основанное на истинности сравнения. Операнды
могут быть числовые или строковые. Когда используются строковые
значения операндов, сравнение проводится с помощью стандартного
лексикографического анализа. Операторы приведены в следующей
таблице:
| оператор |
описание оператора |
пример |
| равно(==) |
возвращает true, если операнды равны |
x == y |
| не равно(!=)
|
озвращает true, если операнды не равны |
x != y |
| больше(>)
|
возвращает true, если левый операнд больше |
x > y |
| больше или равно(>=)
|
возвращает true, если левый операнд больше или равен
правому |
x >= y |
| меньше (<)
|
возвращает true, левый операнд меньше |
x < y |
| меньше или равно (<=)
|
возвращает true, левый операнд меньше или равен правому |
x <= y |
1.2.4 Арифметические
операторы.
Стандартные арифметические операторы - сложение(+),
вычитание(-), умножение (*) и деление (/). Эти операторы работают
также, как и в других языках программирования.
Деление по модулю (%).
Оператор деления по
модулю используется следующим образом:var1 % var2, возвращается
остаток от деления var1 на var2. Например, 12%5 возвращает 2.
Приращение(++)(инкремент). Оператор приращения
используется следующим образом: var++ или ++var. Этот оператор
увеличивает (добавляет единицу) операнд и возвращает значение. Если
используется постфиксная форма, то сначала возвращается значение,
затем происходит увеличение. При использовании префиксной формы
сначала происходит увеличение, затем возращение значения. Например,
если x=3, тогда выражение y=x++ приведет к тому, что у=3 и х=4, а
выражение у=++х к тому, что х=4 и у=4.
Уменьшение(--)(декремент). Оператор уменьшения
используется следующим образом: v