JavaScript работает всего с шестью типами данных, а в реальной практике из них используется ещё меньше. Поскольку JS является языком с неявной типизацией, то разработчику не нужно самостоятельно прописывать тип переменной. Интерпретатор определяет его исходя из контекста.

1. Числовой тип (number)

var age = 27;
var price = 27.15;

При этом тип number используется и для целых чисел, и для дробных, в отличие от других С-подобных языков здесь нет подвидов. Также существует два специальных значения для number.

а. Ошибка вычисления – NuN

Появляется при попытке выполнить недопустимую операцию, например, умножить число на строку.

var age = 27;
var name = 'Kassandra';
alert (age * name); // NaN

б. Бесконечность – Infinity

Получается при делении любого числа на ноль.

alert (age / 0); // Infinity

Можно и непосредственно присвоить переменной значение Infinity. На это значение распространяются все математические операции с бесконечностью. Например, любое число (кроме ноля), умноженное на бесконечность = бесконечность и так далее.

2. Строковый тип (String)

var name = 'Kassandra';
var country = "Italia";

Могут использоваться одинарные либо двойные кавычки. В отличие от PHP, где есть определённые нюансы, в JS обе формы записи равнозначны. В рамках одного проекта рекомендуется придерживаться одной формы записи.

3. Логический тип (boolean)

var isExist = true;
var isMan = false;

Применяется в основном в циклах и различных условных операторах для организации логики. Считается хорошим тоном начинать название переменной с «is» — при это в тексте программы сразу становится понятно, о чём идёт речь.

4. Пустая переменная (null)

var myHotGirl = null;

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

5. Неопределённое значение (undefined)

var newPrice;

Ещё одно специфическое значение, которое присваивается неопределённой переменной. Похоже на предшествующий тип, различие тонкое и чисто идеологическое. Null говорит о том, что переменная пустая, а undefined о том, что не известно даже, какого она типа.

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

6. Объект (object)

var girl = {
	name: 'Kassandra',
	age: 27;
	town: 'Neapol'
};

Фактически объект представляет собой ассоциативный массив. Другой способ создать объект ближе к классическому ООП. Он больше понравится, тем, кто ранее, программировал, например, на C#.

var girl = new Object {
	name: 'Kassandra',
	age: 27;
	town: 'Neapol'
};

Доступ к полям осуществляет через точку либо через квадратные скобки

alert (girl.name); //  получим 'Kassandra'
alert (girl[age]); // получим 27
 

Узнать тип переменного можно с помощью оператора typeof.

typeof undefined;	// undefined
typeof 0;               // number
typeof true;            // boolean
typeof ‘foo’;           // string
typeof {};              // object
typeof null;            // object

Последний результат – известная ошибка, которая уходит своими корнями ещё в период возникновения JavaScript. Однако исправлять её в дальнейшем не стали, чтобы не ломать структур языка, а сегодня это уже просто невозможно.

Существует популярный вопрос на собеседованиях: какой результат выдаёт такой код?

typeof typeof ‘name’;

На третьем месте может стоять любое значение. Правильный ответ – строка (stiring), поскольку результат работы функции typeof – это строка с данными.