Компьютерные программы работают, манипулируя значениями (values), таки_ ми как число 3,14 или текст «Hello World». Типы значений, которые могут быть представлены и обработаны в языке программирования, известны как типы данных (data types), и одной из наиболее фундаментальных характеристик язы_ка программирования является поддерживаемый им набор типов данных. Java_ Script позволяет работать с тремя элементарными типами данных: числами, строками текста (или просто строками) и значениями логической истинности (или просто логическими значениями). В JavaScript также определяются два тривиальных типа данных, null и undefined, каждый из которых определяет только одно значение.
В дополнение к этим элементарным типам данных JavaScript поддерживает со_ ставной тип данных, известный как объект (object). Объект (т. е. член объектно_ го типа данных) представляет собой коллекцию значений (либо элементарных, таких как числа и строки, либо сложных, например других объектов). Объекты в JavaScript имеют двойственную природу: объект может быть представлен как неупорядоченная коллекция именованных значений или как упорядоченная коллекция пронумерованных значений. В последнем случае объект называется массивом (array). Хотя в JavaScript объекты и массивы в основе являются од_ним типом данных, они ведут себя совершенно по_разному, и в этой книге рас_ сматриваются как отдельные типы.
В JavaScript определен еще один специальный тип объекта, известный как функ' ция (function). Функция – это объект, с которым связан исполняемый код. Функ_ция может вызываться (invoked) для выполнения определенной операции. По_ добно массивам, функции ведут себя не так, как другие виды объектов, и в Java_ Script определен специальный синтаксис для работы с ними. Поэтому мы будем рассматривать функции независимо от объектов и массивов.
Помимо функций и массивов в базовом языке JavaScript определено еще не_ сколько специальных видов объектов. Эти объекты представляют собой не новые типы данных, а лишь новые классы (classes) объектов. Класс Date определяет объ_ екты, представляющие даты, класс RegExp – объекты, представляющие регуляр_
40 Глава 3. Типы данных и значения
ные выражения (мощное средство поиска по шаблону, описываемое в главе 11), и класс Error – объекты, представляющие синтаксические ошибки и ошибки времени выполнения, которые могут возникать в JavaScript_программе.
В оставшейся части этой главы подробно описан каждый из элементарных типов данных. В ней также приведены начальные сведения об объектах, массивах и функциях, которые более подробно рассмотрены в главах 7 и 8. И наконец, в ней приведен обзор классов Date, RegExp и Error, подробно документируемых в III час_ ти книги. Глава содержит некоторые узкоспециализированные подробности, ко_ торые можно пропустить при первом прочтении.
Числа
Числа – это основной тип данных, не требующий особых пояснений. JavaScript отличается от таких языков программирования, как C и Java, тем, что не делает различия между целыми и вещественными значениями. Все числа в JavaScript представляются 64_разрядными вещественными значениями (с плавающей точ_ кой), формат которых определяется стандартом IEEE 754.1 Этот формат спосо_ бен представлять числа от ±1,7976931348623157 × 10308 до ±5 × 10_324.
Число, находящееся непосредственно в коде JavaScript_программы, называется числовым литералом. JavaScript поддерживает числовые литералы нескольких форматов, описанных в последующих разделах. Обратите внимание: любому чи_ словому литералу может предшествовать знак «минус» (_), делающий числа от_ рицательными. Однако фактически минус представляет собой унарный опера_ тор смены знака (см. главу 5), не являющийся частью синтаксиса числовых ли_ тералов.