Типы данных в JavaScript

В JavaScript переменная может иметь один из 6 типов данных: Null, Undefined, Number, String, Boolean, Object. Первые 5 типов называются примитивными.

Описание типов данных

Null

Данный тип имеет всего одно возможное значение - null. Оно означает, что переменная не имеет никакого значения (пустое значение). Это не одно и то же, что пустая строка или число ноль, так как пустая строка и ноль - это вполне определенные значения своих типов. null - это ничто.

Undefined

Имеет всего одно возможное значение - undefined. Означает неопределенный тип. Присваивается всем переменным при объявлении.

var result;
alert(result); /* undefined */

Значение undefined напрямую обычно не присваивается, так как для пустого значения специально введено значение null.

Number

Числовой тип данных. Объединяет в себе целые и вещественные числа. Дополнительно в этот тип данных введены специальные значения:

  • +Infinity (или Infinity) - положительная бесконечность.
  • -Infinity - отрицательная бесконечность.
  • NaN - не число (Not-A-Number). Является результатом при ошибке вычислений.

alert(-1/0); /* -Infinity */
alert('one' * 2); /* NaN, так как 'one' не числовой тип */

Если число начинается с 0x или 0X, то JavaScript считает, что число указано в шестнадцатеричной системе счисления:

alert(0xFF); // 255

Если число начинается с 0, то JavaScript считает, что число указано в восьмеричной системе счисления:

alert(010); // 8

Число можно указать в экспоненциальной форме:

alert(1e 5); // 100000

String

Строковый тип данных. Строка должна быть заключена в кавычки (одинарные или двойные).

str1 = "Строка 1";
str2 = 'Строка 2';

Каждый символ имеет свою позицию в строке. Первый символ имеет позицию 0, второй - позицию 1, третий - позицию 2, и т.д.

Чтобы использовать внутри строки служебный символ, его необходимо экранировать, то есть добавить перед ним обратный слеш \.

str = 'Одинарные \'кавычки\' и обратный слеш \\';
alert(str); /* Одинарные 'кавычки' и обратный слеш \ */

Символы, перед которыми установлен обратный слеш, не воспринимаются как служебные, а являются частью строки. Сам символ \ тоже является служебным и должен экранироваться.

Обратный слеш также используется для представления специальных символов строки:

  • \n - перевод строки.
  • \t - символ табуляции.
  • \uHEX - представление любого символа, где HEX - шестнадцатеричный код символа в кодировке Unicode.

Boolean

Булевый (логический) тип данных. Имеет два возможных значения - true (истина) и false (ложь). Используется для логических вычислений.

Object

Объект не является примитивным типом данных. Это элемент с набором свойств и методов. В нем могут использоваться различные примитивные типы и сложные конструкции. Пример простого объекта:

var address = {
  city: 'Астрахань',
  street: 'Заречная',
  house: 101
};

Создан объект address со свойствами city, street и house.

Преобразование типов

Любое значение может быть преобразовано в числовой, строковый или булевый тип.

Правила преобразования примитивов в числовой тип:

  • Числа остаются числами.
  • Строки преобразуются в числа, если это возможно. Если нет, тогда значение NaN.
  • Булевые значения: true преобразуется в 1, false в 0.
  • null преобразуется в 0.
  • undefined преобразуется в NaN.

Преобразование примитивов в строковый тип происходит без изменений. Все ключевые слова и числа становятся строками того же содержания.

При преобразовании в логический тип данных пустая строка '