Какие типы данных есть в 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 минут бесплатно.