Связаться

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

javascript
Базовые
  • Null
  • Undefined 
  • Object 
  • Number 
  • String   
  • Boolean 
  • Symbol (ES6)

Все типы данных, кроме Object, являются примитивными.

У переменной javascript не может быть типа, тип есть только у значения переменной, и он может быть разный в каждый момент выполнения кода.

Для получения типа значения переменной можно использовать оператор typeof. Он возвращает текущий тип данных переменной в виде строки. Исключение — typeof null вернет Object, что есть баг языка. При приведении типов null вернет false, в то время как настоящий Object всегда возвращает true, даже если объект не содержит данных.

Boolean

Может содержать только true/false

Строка

Строки имеют некоторое сходство с массивами — и тут и там определены методы indexOf, concat, свойство length. Ключевое отличие — строки не меняются “на месте”, любые операции, изменяющие строку, должны всегда заменять исходную строку (т.е. Невозможно заменить символ с индексом i, мы можем только заменить строку целиком).

Число

Единственный тип для хранения числовых данных в javascript. Сюда включены как целые числа, так и числа с плавающей точкой. Как и все остальные языки, основанные на стандарте IEEE 754, неправильно обрабатывает числа с плавающей точкой

Неопределенные значения

Undefined — переменная объявлена, но значение еще еще получено-; 

Null — переменная получила значение, но оно пустое.

Объект

Особый тип данных в js. Содержит коллекцию пар “ключ”: “значение”. Значение может быть любого типа: примитив, массив, другой объект; с любой вложенностью. Ключом могуть быть только строка и символ.

Для удаления свойства используется оператор delete.

В случаях, когда ключ состоит из нескольких слов или является динамическим, значение объекта по этому ключу можно получить, используя квадратные скобки, например obj[‘multiword key’]. Точно таким же способом можно создать вычисляемый ключ объекта при присвоении значения: obj = {[variable]: value}

В отличие от примитивных свойств, объекты не копируются по значению. Если переменной присвоить объект, а затем присвоить эту переменную другой переменной, обе они будут ссылаться на один и тот-же участок оперативной памяти. 

Массив

В javascript в основе массивов лежат объекты. Отличие во встроенных методах для добавления/удаления/итерации, а также свойство length, возвращающее длину массива. В отличие от некоторых других языков программирования, у массивов в js динамическая длина, нет необходимости задавать ее вручную.

Также в отдельный подтип стоит вынести массивободобные выборки — коллекции HTML элементов, аргументы функции, полученные через псевдомассив аргументов arguments.

Функция

Объект, имеющий дополнительную возможность быть исполненным. typeof function выдает “function”

  
    let testScript = 'test';
  

Символ

Гарантированно уникальный идентификатор. Символы используются для создания защищенных свойств объектов: к полю объекта, ключом которого является символ, нельзя обратиться случайно, они игнорируются циклом for…in, как и методом Object.keys. Однако при использовании метода Object.assign копируются в том числе и символы.