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.
  • Парсьте явно на границах.