foundation
null vs undefined
Семантика отсутствия, опциональные свойства, значения по умолчанию, optional chaining и nullish coalescing.
`undefined` обычно означает «не передали» или «свойство отсутствует». `null` обычно означает намеренное отсутствие. Оба nullish, но в API сигнализируют о разном намерении.
`value || fallback` считает отсутствующими все falsy значения (0, "", false). `value ?? fallback` подставляет fallback только для `null` или `undefined`. Optional chaining `obj?.a?.b` прерывает цепочку только там, где стоит `?.`.
const count = 0;
console.log(count || 10); // 10 — неверно, если 0 валиден
console.log(count ?? 10); // 0
Явно моделируйте контракт API: какие поля опциональны, где null, а где undefined, и являются ли 0 или false валидными состояниями.
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Различайте || и ??.
- Используйте ?. для безопасного вложенного доступа.
- Документируйте семантику отсутствия в API.