В JavaScript 7 примитивов — string, number, bigint, boolean, undefined, null, symbol — и объекты (включая массивы и функции). Примитивы копируются по значению, объекты — по ссылке.
typeof null // "object" — историческая ошибка
0.1 + 0.2 === 0.3 // false — плавающая точка
[] == false // true — приведение типов
const a = { n: 1 }; const b = a; b.n = 2; a.n // 2 — одна ссылка
Что важно знать
===сравнивает без приведения типов — использовать всегда;==— только осознанно (x == nullловит иnull, иundefined).- Ложные значения:
false,0,-0,0n,"",null,undefined,NaN.NaN !== NaN, проверка —Number.isNaN. ??срабатывает только наnull/undefined,||— на любое ложное.- Копирование:
{...obj}и[...arr]— поверхностные,structuredClone(obj)— глубокое. - Методы массивов:
map,filter,reduceвозвращают новый массив,sort,reverse,spliceменяют исходный (есть неизменяющиеtoSorted,toReversed,toSpliced).