intermediate
Приведение типов и сравнение
Неявное преобразование, truthiness, == против ===, Object.is и пограничные случаи сравнения.
Приведение типов происходит неявно (`==`) или явно (`Number(x)`, `String(x)`). Truthiness управляет `if (value)`, но опасна как валидация — пустые массивы и объекты truthy.
Предпочитайте `===`, чтобы избежать неявного преобразования. `Object.is` находит NaN и различает -0 и +0.
console.log([] == false); // true
console.log([] === false); // false
console.log(Object.is(NaN, NaN)); // true
Паттерн на интервью: предскажите вывод, объясните путь приведения, затем рекомендуйте явный парсинг на границах системы (формы, API, query params).
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- По умолчанию используйте ===.
- Знайте truthy/falsy значения.
- Используйте Object.is для NaN и signed zero.
- Парсьте явно на границах.