Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_Inet.doc
Скачиваний:
13
Добавлен:
13.04.2015
Размер:
1.05 Mб
Скачать

8. Типы

Значение - это сущность, которая может иметь один из девяти типов. Всего определено девять различных типов (Undefined, Null, Boolean, String, Number, Object, Reference, List и Completion). Значения типов Reference, List и Completion используются только как промежуточные результаты вычисления выражений и не могут быть сохранены как свойства объектов.

8.1 Тип Undefined

Для типа Undefined ("не определено") существует единственное значение -undefined. Значением любой переменной, которой ещё не было присвоено значения, является undefined.

8.2 Тип Null

Для типа Null ("пусто", "ничто") существует единственное значение - null.

8.3 Тип Boolean

Тип Boolean ("булевский", "логический") представляет собой логическую сущность, которая может принимать одно из двух значений: true или false.

8.4 Тип String

Тип String ("строка") представляет собой множество всех конечных упорядоченных последовательностей из нуля или более 16-разрядных беззнаковых целых значений ("элементов"). Тип String обычно используется для представления текстовых данных в исполняемой программе на ECMAScript. В этом случае каждый элемент строки трактуется как значение кода Юникода (см. раздел 6). Каждый элемент считается занимающим определённую позицию в последовательности. Эти позиции пронумерованы неотрицательными целыми числами. Первый элемент (если присутствует) находится на позиции 0, следующий элемент (если присутствует) на позиции 1, и т.п. Длина строки равна количеству элементов (т. е. 16-битных значений), из которых она состоит. Пустая строка имеет длину ноль, и, таким образом, не содержит элементов.

Когда строка содержит текстовые данные, каждый элемент считается за единичный код UTF-16. Вне зависимости от того, действительно ли используется UTF-16 в качестве формата хранения строки, символы в значении типа String пронумерованы так, как будто они представлены при помощи UTF-16. Все операции над значениями типа String (за исключением особо обозначенных случаев) работают с ними, как с однородными последовательностями 16-разрядных целых чисел; они не гарантируют нормализованности результирующей строки и не гарантируют языкозависимых результатов.

Замечание Основанием для подобных решений было стремление сделать реализации типа String как можно более простыми и высокопроизводительными. Подразумевается, что текстовые данные, поступающие в среду выполнения извне (например пользовательский ввод, читаемый из файла или получаемый по сети текст и т.п.) должны быть преобразованы в нормализованную форму C Юникода ещё до того, как их увидит исполняющаяся программа. Предполагается, что это должно происходить одновременно с преобразованием текста из исходной кодировки в Юникод (и, таким образом, не вносит дополнительных затрат по времени или сложности). Поскольку рекомендуется, чтобы исходный код программы на ECMAScript был в нормализованной форме C, гарантируется нормализованность строковых литералов (при условии нормализации исходного кода), если они не содержат юникодных escape-последовательностей.

8.5 Тип Number

У типа Number ("число") имеется ровно 18 437 736 874 454 810 627 (т.е., 264-253+3) различных значений, представляющих 64-разрядные значения двойной точности формата IEEE 754 согласно Стандарту IEEE на двоичную арифметику с плавающей запятой, за исключением того, что 9007199254740990 (т.е., 253-2) различных значений "не-число" Стандарта IEEE представлены в ECMAScript как единственное специальное значение NaN. (Заметим, что значение NaNполучается в программе при помощи выражения NaN, если глобальная переменная NaN не была изменена в ходе выполнения программы.) В некоторых реализациях для внешнего кода различные значения "не-число" могут быть различимыми, но такое поведение зависит от конкретной реализации. Для кода на ECMAScript все значения NaN являются неотличимыми друг от друга.

Существуют два других особых значения, называемые положительная бесконечность и отрицательная бесконечность. Для краткости и в пояснительных целях эти значения также могут обозначаться +∞ и -∞соответственно. (Заметим, что эти два значения получаются в программе при помощи выражений +Infinity (или просто Infinity) и -Infinity, если глобальная переменная Infinity не была изменена в ходе выполнения программы.)

Прочие 18 437 736 874 454 810 624 (т.е. 264-253) значений называются конечными числами. Половина из этих значений является положительными числами, а половина - отрицательными. Для каждого конечного положительного числа имеется соответствующее отрицательное число, равное ему по модулю.

Заметим, что существуют как положительный ноль, так и отрицательный ноль.Для краткости и в пояснительных целях эти значения также могут обозначаться +0 и -0 соответственно. (Заметим, что эти два нулевых числовых значения получаются при помощи выражений +0 (или просто 0) и -0.)

18 437 736 874 454 810 622 (т.е., 264-253-2) конечных ненулевых значений разделяются на два типа:

18 428 729 675 200 069 632 (т.е., 264-254) из них нормализованы и имеют вид

s * m * 2e

где s равно +1 или -1, m - положительное целое меньше, чем 253, но не меньше чем 252 и e - целое в диапазоне от -1074 до 971 включительно.

Оставшиеся 9 007 199 254 740 990 (т.е. 253-2) значений денормализованы и имеют вид:

s * m * 2e

где s равно +1 or -1, m - положительное целое, меньше чем 252 и e равно -1074.

Заметим, что все положительные и отрицательные целые, модуль которых не превышает 253, представимы типом Number (причём у 0 есть два представления:+0 и -0).

Конечное число является нечётно значимым, если оно не равно нулю и целое m, использованное для его представления (в одном из приведённых выше видов) - нечётное. Иначе оно является чётно значимым.

В данной спецификации фраза "численное значение x", где x обозначает точное ненулевое вещественное математическое значение (которое может даже являться иррациональным числом, таким как π), означает численное значение, выбранное по следующему принципу. Представим множество всех конечных значений типа Number, из которого удалён -0 и добавлены два дополнительных значения, не представимых в типе Number: 21024 (т.е. +1 * 253 * 2971) и -21024(т.е. -1 * 253 * 2971 ). Выберем из этого множества элемент, наиболее близкий по значению к x. Если два значения в множестве являются одинаково близкими, из них выбирается чётно значимое, причём для этих целей два дополнительных значения 21024 и -21024 считаются чётно значимыми. Наконец, если было выбрано 21024, заменяем его на +∞; если было выбрано -21024, заменяем его на-∞; если было выбрано +0, заменяем его на -0 в том и только в том случае, когда x меньше нуля; любое другое значение оставляем без изменений. Результат является численным значением для x. (Эта процедура в точности соответствует режиму "округление к ближайшему" стандарта IEEE 754.)

Некоторые операторы ECMAScript работают только с целыми значениями из диапазона от -231 до 231-1 включительно или из диапазона от 0 до 232-1 включительно. Эти операторы принимают любое значение типа Number, но предварительно преобразовывают каждое из таких значений к одному из 232целочисленных значений. См. описания операторов ToInt32 и ToUint32 в разделах 0 и 0 соответственно.

8.6 Тип Object

Object ("объект") представляет собой неупорядоченный набор свойств. Каждое свойство состоит из имени, значения и набора атрибутов.

  1. JavaScript и DHTML.

Dynamic HTML или DHTML — это способ создания интерактивного веб-сайта, использующий сочетание статичного языка разметки HTML, встраиваемого (и выполняемого на стороне клиента) скриптового языка JavaScript, CSS (каскадных таблиц стилей) и DOM (объектной модели документа).

Он может быть использован для создания приложения в веб-браузере: например для более простой навигации или для придания интерактивности форм. DHTML может быть использован для динамического перетаскивания элементов по экрану. Также он может служить как инструмент для создания основанных на браузере видеоигр.

DHTML приложения, которые вполне автономны в браузере, без серверной поддержки, такой как база данных, иногда вынуждены обращаться кSingle Page Applications, или SPA.

Конкурирующая техника включает в себя Adobe Flash и Silverlight.

  1. Основные понятия DOM. Использование DOM при генерации динамического контента.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]