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.