В JavaScript существует несколько основных типов данных.
В этой главе мы получим о них общее представление, а позже, в соответствующих главах подробно познакомимся с использованием каждого типа в отдельности.
Единый тип число используется как для целых, так и для дробных чисел.
Существуют специальные числовые значения Infinity
(бесконечность) и NaN
(ошибка вычислений).
Например, бесконечность Infinity
получается при делении на ноль:
Ошибка вычислений NaN
будет результатом некорректной математической операции, например:
Эти значения формально принадлежат типу «число», хотя, конечно, числами в их обычном понимании не являются.
В JavaScript одинарные и двойные кавычки равноправны. Можно использовать или те или другие.
В некоторых языках программирования есть специальный тип данных для одного символа. Например, в языке С это char
. В JavaScript есть только тип «строка» string
. Что, надо сказать, вполне удобно.
Более подробно со строками мы познакомимся в главе Строки.
У него всего два значения: true
(истина) и false
(ложь).
Как правило, такой тип используется для хранения значения типа да/нет, например:
О нём мы поговорим более подробно, когда будем обсуждать логические вычисления и условные операторы.
Значение null
не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения null
:
В JavaScript null
не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое имеет смысл «ничего» или «значение неизвестно».
В частности, код выше говорит о том, что возраст age
неизвестен.
Значение undefined
, как и null
, образует свой собственный тип, состоящий из одного этого значения. Оно имеет смысл «значение не присвоено».
Если переменная объявлена, но в неё ничего не записано, то её значение как раз и есть undefined
:
Можно присвоить undefined
и в явном виде, хотя это делается редко:
В явном виде undefined
обычно не присваивают, так как это противоречит его смыслу. Для записи в переменную «пустого» или «неизвестного» значения используется null
.
Первые 5 типов называют «примитивными».
Особняком стоит шестой тип: «объекты».
Он используется для коллекций данных и для объявления более сложных сущностей.
Объявляются объекты при помощи фигурных скобок {...}
, например:
Мы подробно разберём способы объявления объектов и, вообще, работу с объектами, позже, в главе Объекты как ассоциативные массивы.
Оператор typeof
возвращает тип аргумента.
У него есть два синтаксиса: со скобками и без:
typeof x
.typeof(x)
.Работают они одинаково, но первый синтаксис короче.
Результатом typeof
является строка, содержащая тип:
Последние две строки помечены, потому что typeof
ведет себя в них по-особому.
typeof null == "object"
– это официально признанная ошибка в языке, которая сохраняется для совместимости. На самом деле null
– это не объект, а отдельный тип данных.typeof
выделяет функции отдельно, возвращая для них "function"
. На практике это весьма удобно, так как позволяет легко определить функцию.К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных.
Есть 5 «примитивных» типов: number
, string
, boolean
, null
, undefined
и 6-й тип – объекты object
.
Очень скоро мы изучим их во всех деталях.
Оператор typeof x
позволяет выяснить, какой тип находится в x
, возвращая его в виде строки.