Spread-оператор (...) — мощный инструмент, но его поведение с undefined и null может сломать мозг. Посмотрите на эти примеры: console.log('fun', ((...undefined) => {})()); // ✅ fun []
console.log('obj', { ...undefined, ...null }); // ✅ obj {}
console.log('arr', [ ...undefined ]); // ❌ TypeError! Что здесь происходит? – Здесь ...undefined — это корректный синтаксис для пустого списка аргументов.
– Результат — пустой массив [], потому что ничего не передано. – Spread игнорирует undefined и null, как будто их нет.
– Это поведение специально — чтобы избежать лишних проверок. – Здесь нужен итерируемый объект, а undefined им не является → TypeError.
– В отличие от объектов, массивы не терпят undefined в spread-операторе. Паттерны для безопасного использования: // Для массивов: подменяем undefined на пустой массив
const safeArray = [...(possiblyUndefined || [])];
// Для объектов: подменяем null/undefined на пустой объект
const safeObject = { ...(possiblyNull || {}) }; – Объекты: Spread ра