Вопрос с собеседования · Frontend

Какие типы данных есть в JavaScript?

JuniorОсновы JavaScript
Ещё спрашивают так:
  • Почему typeof null — "object"?
  • Чем примитивы отличаются от объектов?
Коротко

Семь примитивов: string, number, bigint, boolean, undefined, null, symbol — и object (включая массивы, функции, даты). Примитивы неизменяемы и копируются по значению, объекты — передаются по ссылке. typeof null === "object" — историческая ошибка первой реализации.

  • number — 64-битный double: 0.1 + 0.2 !== 0.3, безопасные целые до 2^53
  • Массив — Array.isArray, typeof даст "object"
  • undefined — «значение не задано», null — «явно пусто»

А ещё Методы у строк работают через временную обёртку String

Подробно

typeof:

typeof "a"        // "string"
typeof 1          // "number"
typeof 1n         // "bigint"
typeof true       // "boolean"
typeof undefined  // "undefined"
typeof Symbol()   // "symbol"
typeof null       // "object"  — ошибка, сохранённая ради совместимости
typeof {}         // "object"
typeof []         // "object"
typeof (() => 1)  // "function"

Примитивы и объекты. Присваивание примитива копирует значение; присваивание объекта копирует ссылку — две переменные смотрят на один объект.

Числа. Все числа — double: дробная погрешность и потеря точности целых больше Number.MAX_SAFE_INTEGER. Для больших целых — BigInt, для денег — целые копейки.

null и undefined: undefined — значение по умолчанию у неинициализированной переменной, отсутствующего свойства и аргумента; null присваивают явно. Оператор ?? подставляет значение для обоих.

Что хотят услышать

  • Перечень типов.
  • Примитивы против объектов.
  • Особенности typeof и чисел.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Массив — отдельный примитивный тип, а null — объект
  • ✓Семь примитивов (в том числе bigint и symbol) и object; примитивы неизменяемы
  • ✗typeof null === "null", а массивы и функции — отдельные примитивные типы языка
  • ✗Примитивы передаются по ссылке и меняются на месте

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования