8 основных типов данных в JavaScript

В этом руководстве вы узнаете о основных типах данных JavaScript и их уникальных характеристиках.

JavaScript имеет примитивные типы данных:

  1. null
  2. undefined
  3. boolean
  4. number
  5. string
  6. symbol — доступен с ES2015
  7. bigint — доступен с ES2020

и object сложного типа данных.

Типы данных JavaScript

JavaScript — это язык с динамической типизацией. Это означает, что переменная не связана с типом. Другими словами, переменная может содержать значения разных типов. Например:

let counter = 120; // counter is a number counter = false; // counter is now a boolean counter = "foo"; // counter is now a string

Чтобы получить текущий тип значения, которое хранит переменная, вы используете оператор typeof :

let counter = 120; console.log(typeof(counter)); // "number" counter = false; console.log(typeof(counter)); // "boolean" counter = "Hi"; console.log(typeof(counter)); // "string"

Выход:

"number" "boolean" "string"

Неопределенный тип

undefined тип — это примитивный тип, который имеет только одно значение undefined. По умолчанию, когда переменная объявлена, но не инициализирована, ей присваивается значение undefined.

Рассмотрим следующий пример:

let counter; console.log(counter); // undefined console.log(typeof counter); // undefined

В этом примере counter является переменной. Поскольку counter не был инициализирован, ему присваивается значение undefined. Тип counter также undefined.

Важно отметить, что оператор typeof также возвращает значение undefined, когда вы вызываете его для переменной, которая не была объявлена:

console.log(typeof undeclaredVar); // undefined

Тип null

Тип null — это второй примитивный тип данных, который также имеет только одно значение null. Например:

let obj = null; console.log(typeof obj); // object

JavaScript определяет, что null равно undefined следующим образом:

console.log(null == undefined); // true

Тип number

JavaScript использует number тип для представления как целых чисел, так и чисел с плавающей запятой.

Следующий оператор объявляет переменную и инициализирует ее значение целым числом:

let num = 100;

Чтобы представить число с плавающей запятой, вы включаете десятичную дробь, за запятой следует хотя бы одно число. Например:

let price= 12.5; let discount = 0.05;

Обратите внимание, что JavaScript автоматически преобразует число с плавающей запятой в целое число, если число кажется целым.

Причина в том, что Javascript всегда хочет использовать меньше памяти, поскольку значение с плавающей запятой использует вдвое больше памяти, чем целочисленное значение. Например:

let price = 200.00; // interpreted as an integer 200

Чтобы получить диапазон числового типа, вы используете Number.MIN_VALUE и Number.MAX_VALUE. Например:

console.log(Number.MAX_VALUE); // 1.7976931348623157e+308 console.log(Number.MIN_VALUE); // 5e-324

Кроме того, вы можете использовать Infinity и -Infinity для представления бесконечного числа. Например:

console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity console.log(-Number.MAX_VALUE - Number.MAX_VALUE); // -Infinity

NaN

NaN означает не число. Это специальное числовое значение, указывающее на недопустимое число. Например, деление строки на число возвращает NaN :.

console.log('a'/2); // NaN;

NaN имеет две особенности:

  • Любая операция с NaN возвращает NaN.
  • NaN не равно никакому значению, в том числе самому себе.

Пример:

console.log(NaN/2); // NaN console.log(NaN == NaN); // false

string

В JavaScript строка — это последовательность из нуля или более символов. Строковый литерал начинается и заканчивается либо одинарной кавычкой( ' ), либо двойной кавычкой( " ).

Строка, начинающаяся с двойной кавычки, должна заканчиваться двойной кавычкой. Точно так же строка, начинающаяся с одинарной кавычки, также должна заканчиваться одинарной кавычкой:

let greeting = 'Hi'; let message = "Bye";

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

let message = 'I\'m also a valid string'; // use \ to escape the single quote(')

Строки JavaScript неизменяемы. Это означает, что ее нельзя изменить после создания. Однако вы можете создать новую строку из существующей строки. Например:

let str = 'JavaScript'; str = str + ' String';

В этом примере:

  • Во-первых, объявите переменную str и инициализируйте ее строкой 'JavaScript'.
  • Во-вторых, используйте оператор +, чтобы объединить 'JavaScript' с ' String' чтобы сделать его значение 'Javascript String'.

В фоновом режиме механизм JavaScript создает новую строку, содержащую новую строку 'JavaScript String' и уничтожает исходные строки 'JavaScript' и ' String'.

Тип boolean

boolean тип имеет два буквальных значения: true и false в нижнем регистре. В следующем примере объявляются две переменные, содержащие логические значения.

let inProgress = true; let completed = false; console.log(typeof completed); // boolean

JavaScript позволяет преобразовывать значения других типов в логические значения true или false.

Чтобы преобразовать значение другого типа данных в логическое значение, вы используете функцию Boolean(). В следующей таблице показаны правила преобразования:

Типtruefalse
stringнепустая строкапустая строка
numberненулевое число и бесконечность0, NaN
objectненулевой объектнулевой
undefinedнеопределенный

Пример:

console.log(Boolean('Hi'));// true console.log(Boolean('')); // false console.log(Boolean(20)); // true console.log(Boolean(Infinity)); // true console.log(Boolean(0)); // false console.log(Boolean({foo: 100})); // true on non-empty object console.log(Boolean(null));// false

symbol

В ES6 JavaScript добавил примитивный тип: symbol. В отличие от других примитивных типов, тип symbol не имеет буквенной формы.

Чтобы создать символ, вы вызываете функцию Symbol следующим образом:

let s1 = Symbol();

Функция Symbol создает новое уникальное значение каждый раз, когда вы ее вызываете.

console.log(Symbol() == Symbol()); // false

bigint

Тип bigint представляет целые числа, которые больше 253 – 1. Чтобы сформировать литеральное число bigint, вы добавляете букву n в конце числа:

let pageView = 9007199254740991n; console.log(typeof(pageView)); // 'bigint'

Тип object

В JavaScript объект представляет собой набор свойств, где каждое свойство определяется как пара ключ-значение.

В следующем примере пустой объект определяется с использованием синтаксиса литерала объекта:

let emptyObject = {};

В следующем примере определяется объект person с двумя свойствами: firstName и lastName.

let person = { firstName: 'John', lastName: 'Doe' };

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

Например, если у объекта person есть свойство first-name, вы должны поместить его в кавычки, например "first-name".

Свойство объекта может содержать объект. Например:

let contact = { firstName: 'John', lastName: 'Doe', email: 'john.doe@example.com', phone: '(408)-555-9999', address: { building: '4000', street: 'North 1st street', city: 'San Jose', state: 'CA', country: 'USA' } }

Объект contact имеет свойства firstName, lastName, email, phone и address.

Свойство address само по себе содержит объект, который имеет свойства building, street, city, state и country.

Чтобы получить доступ к свойству объекта, вы можете использовать

  • Точечное обозначение( . )
  • Обозначение, подобное массиву( [] ).

В следующем примере используется запись через точку( . ) для доступа к свойствам firstName и lastName объекта contact.

console.log(contact.firstName); console.log(contact.lastName);

Если вы ссылаетесь на несуществующее свойство, вы получите undefined значение. Например:

console.log(contact.age); // undefined

В следующем примере нотация, подобная массиву, используется для доступа к свойствам email и phone объекта contact.

console.log(contact['phone']); // '(408)-555-9999' console.log(contact['email']); // 'john.doe@example.com'

Заключение

  • JavaScript имеет примитивные типы: number, string, boolean, null, undefined, symbol и bigint, а также сложный тип: object.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript