Специальные числовые литералы 1. NaN (Not a Number - не число) используется в качестве результата арифметических операций над строками и специальным значением undefined.
2. Infinity и -Infinity используются для значений чисел, выходящих за допустимый диапазон их изменения в JavaScript.
Строковый тип
Строковое значение - последовательность ноль или более символов Unicode, которая используется в программе для представления текстовых данных.
Строковые литералы
В JavaScript строковые литералы можно задавать двумя равноправными способами - последовательность символов, заключенная в двойные или одинарные кавычки:
"Анна"'АННА' Один тип кавычек можно использовать в литерале, заданном другим типом кавычек:
"It's a string" // значение строки равно "" // пустая строка В строковых литералах можно использовать ESC-последовательности, которые начинаются с символа обратной наклонной черты, за которой следует обычный символ. Некоторые подобные комбинации трактуются как один специальный символ:
Esc-последовательности
| Символ
| \b
| Возврат на один символ
| \f
| Переход на новую страницу
| \n
| Переход на новую строку
| \r
| Возврат каретки
| \t
| Горизонтальная табуляция Ctrl-I
| \'
| Апостроф
| \"
| Двойные кавычки
| \\
| Обратная наклонная черта
|
ESC-последовательности форматирования "работают" при отображении информации в диалоговых окнах, отображаемых функциями alert(), prompt() и confirm(), а также если методом document.write() записывается содержимое элемента PPE.
Булевый тип
Имеет два значения - истина и ложь. Обычно значения этого типа используются в операторах принятия решения if и switch или в операторах цикла типа while.
Булевы литералы
Две лексемы true и false.
Числовые значения в булевом контексте также трактуются как истина или ложь:
· целый или вещественный нуль (0, 00, 0.0, 0e1), null и undefined трактуются как false;
· все остальные числовые значения рассматриваются как true.
Строковые значения в булевом контексте также трактуются как истина или ложь:
· пустая строка "" трактуются как false;
· все остальные строковые значения рассматриваются как true.
Специальные типы данных
Тип данных null имеет одно значение null. Когда переменная имеет значение null, то это означает, что она "пуста" - ей не присвоено никакого значения допустимого типа. Присваивание переменной значения null не уничтожает ее, но просто делает ее переменной, не содержащей значения любого допустимого типа данных: числового, строкового, булевого, объектного или массива. Значение null трактуется как 0 в арифметических операциях и false в логических, но оно не равняется 0 (как в С и С++).
Операция typeof для специального типа null возвращает Object (из-за совместимости с предыдущими версиями JavaScript).
Тип данных undefined имеет единственное значение undefined, которое присваивается переменной в двух случаях:
1. переменная объявлена, но ей еще не присвоено никакое значение;
2. при попытке обратиться к несуществующему свойству объекта.
В булевом контексте значение undefined трактуется как false, а в арифметическом как NaN. Нельзя сравнивать со значением undefined (такого просто не существует), но следует использовать операцию typeof, возвращающую тип undefined.
Переменные
Каждая переменная задается своим идентификатором - последовательностью буквенно-цифровых символов, начинающуюся с буквы (символ подчеркивания относится к букве):
Temp1MyFunction_my_Method Определить переменную можно двумя способами:
· оператором var;
· оператором присваивания.
Оператор var используется как для задания, так и для инициализации переменной и может располагаться в любом месте сценария:
var имя_переменной [= начальное_значение];var weekDay = "Пятница"; Оператор присваивания, составленный из единственной операции присваивания, для которой используется символ =, также может вводить новую переменную в любом месте сценария, а также он используется для изменения значения уже созданной переменной.
В выражениях все переменные должны быть объявлены либо оператором var, либо в операторе присваивания. В противном случае будет сгенерирована ошибка, что отсутствует определение соответствующей переменной.
Динамическое изменение типа переменной
По ходу выполнения сценария переменной могут присваиваться разные значения, меняя, таким образом, ее тип:
var weekDay // переменная определена, но не инициализирована // она имеет специальное значение undefined. . .weekDay = "Пятница"; // Строковый тип. . .weekDay = 5; // Целый тип
Определение типа переменной
Унарная операция typeof позволяет определить тип переменной, т. е. определить тип величины, хранящейся в данный момент в переменной. Синтаксис ее имеет вид:
typeof(переменная)typeof переменная Эта операция возвращает одну из шести строк, соответствующих возможным типам данных JavaScript:
"number""string""boolean""undefined""object""function" Упражнение 1.
| | Написать сценарий, который при загрузке страницы HTML в браузер методом document.write() формирует на странице элемент PRE и его содержимое в виде трех строк текста, в которых слова отделены символами табуляции. Это действие реализовать в одном вызове метода document.write().
|
Упражнение 2.
| | Написать сценарий, который после загрузки страницы отображает в диалоговом окне, создаваемом функцией alert(), три строки сообщения.
|
Упражнение 3.
| | Проверить соответствие булеву значению false значений 0, 00, 0.0, oe1, null, undefined, +1,-1.1,"", "0", "undefined", "xxxx". Для этого создать переменные с указанными значениями и распечатать, например, функцией alert(), результат вычисления выражения !v, где v является идентификатором переменной с одним из указанных значений.
|
Упражнение 4.
| | Написать сценарий, в котором одной и той же переменной присваиваются разные значение. После изменения значения переменной распечатать ее тип (результат выполнения операции typeof).
|
Выражения и операции
Выражение - это комбинация переменных, литералов и операций, в результате вычисления которой получается одно единственное значение.
Переменные в выражениях должны быть инициализированы либо в операторе var, либо оператором присваивания. Если при вычислении выражения встречается неинициализированная или вообще не определенная переменная, то в Internet Explorer версий меньше 6.0 интерпретатор генерирует ошибку "undefined variable" ("переменная не определена"), указывая ее местоположение на странице HTML. В Internet Explorer 6.0 ситуация с использованием в выражении неинициализированной переменной была приведена к стандарту - такая переменная, а с ней и все арифметическое выражение принимает значение NaN, трактуемое в булевом контексте как false, а в строковых операциях как строка "NaN", но при использовании необъявленной переменной интерпретатор генерирует ошибку "определение отсутствует".
Присваивание является операцией, которая не только присваивает левому операнду значение правого, но и вычисляется равным значению выражения правой части. Таким образом, любая конструкция с операцией присваивания рассматривается как выражение.
Кроме выражения присваивания в JavaScript определены еще три типа выражений:
· арифметическое - вычисляемым значением является число;
· строковое - вычисляемым значением является строка;
· логическое - вычисляемое значение равно true или false.
Арифметические операции
Операция
| Смысл
| +
| Сложение
| -
| Вычитание
| *
| Умножение
| /
| Деление (1/2=0.5)
| %
| Остаток от деления чисел (12%5.1=1.5999999999999996)
| ++
| Увеличение на 1 (префиксная и постфиксная)
| --
| Уменьшение на 1 (префиксная и постфиксная)
|
Пример:
speed = 5.5;time = 4;distance = speed * time;distance = (speed ++)*time; Арифметические операции в выражении вычисляются слева направо с учетом общепринятого их математического старшинства. Скобками можно изменить порядок выполнения арифметических операций в выражении.
Логические выражения
Для создания логических выражений используются операции сравнения и логические операции, применяемые к переменным любого типа.
Операции сравнения
Операция
| Синтаксис
| Описание
| ==
| a == b
| Истина, если оба операнда равны
| ===
| a === b
| true, если значения операндов равны и сами операнды одного типа
| !=
| a != b
| Не равно
| !===
| a !== b
| true, если значения операндов не равны и/или они не одного типа
| >=
| a >= b
| Больше или равно
| <=
| a <= b
| Меньше или равно
| >
| a > b
| Строго больше
| <
| a < b
| Строго меньше
|
Логические операции
Операция
| Синтаксис
| Описание
| &&
| a && b
| логическое И; Возвращает a, если оно преобразуется к false, иначе b
| ||
| a || b
| логическое ИЛИ; Возвращает a, если оно преобразуется к true, иначе b
| !
| !a
| логическое НЕ; Если a равно true, возвращает false; если a равно false, возвращает true
|
Вычисляются по укороченной схеме - если результат операции становится известным после вычисления первого операнда, то второй операнд вообще не вычисляется. В следующих выражениях второй операнд вычисляться не будет, так как результат их вычисления уже определен значением первого операнда вне зависимости от значения второго:
false && операнд2 // всегда равно falsetrue || операнд2 // всегда равно true
Битовые логические операции
Операция
| Синтаксис
| Описание
| И
| a & b
| Результирующий бит равен 1, если оба равны 1, иначе 0
| ИЛИ
| a | b
| Результирующий бит равен 1, если хотя бы один бит равен 1
| Исключающее ИЛИ
| a^b
| Результирующий бит равен 1, если хотя бы один бит равен 1, но не оба одновременно
| Отрицание
| ~a
| Инвертирует биты
| Смещение влево
| a<<n
| Сдвигает все биты влево на n позиций, добавляя справа нулевые
| Смещение вправо
| a>>n
| Сдвигает все биты вправо на n позиций, используя значение знакового бита для заполнения "освобождаемых" слева битов
| Смещение вправо с заполнением нулями
| a>>>n
| Сдвигает все биты вправо на n позиций, заполняя "освобождаемые" слева биты нулями
|
Строковые операции
Существует только одна строковая операция - операция конкатенации (соединения) строк +, если не считать сокращенной формы операции присваивания со сложением += и сравнения строк.
string = "Моя" + "строка"; // string равно "Моястрока" Операция конкатенации строк может использоваться со смешанными типами операндов. Все операнды приводятся к строковому типу, если хотя бы один из операндов содержит строковый литерал.
|