foundation

Примитивные значения

string, number, bigint, boolean, symbol, undefined, null и неизменяемое поведение примитивов.

В JavaScript семь примитивных типов: string, number, bigint, boolean, symbol, undefined и null. Примитивы копируются по значению — при присваивании копируется значение, а не общая ссылка. Примитив нельзя изменить; методы вроде `"abc".toUpperCase()` возвращают новые значения.

`typeof null === "object"` — историческая ошибка. `typeof` для массивов возвращает `"object"`. `Object.is(NaN, NaN)` равно true, а `NaN === NaN` — false. `Object.is(-0, +0)` равно false, тогда как `===` считает их равными.

Boxing оборачивает примитив во временный объект, чтобы работали методы: `(42).toFixed(2)` кратковременно оборачивает число.

На интервью: отделяйте равенство примитивов от идентичности объектов, объясняйте boxing и упоминайте NaN и signed zero.

Компромисс часто между ясностью и производительностью или между безопасностью и удобством.

Чеклист:

  • Перечислите все семь примитивных типов.
  • Объясните копирование по значению и идентичность по ссылке.
  • Упомяните NaN, -0 и typeof null.