TGViewer
JavaScript for Devs JavaScript for Devs @js_for_devs · 491 subscribers
Post #9 364
🙈 Ловушки двойного равенства в JavaScript

Одна из самых частых проблем в JavaScript — неочевидные результаты сравнения с помощью ==. Алгоритм абстрактного сравнения (Abstract Equality Comparison) приводит типы «на лету», из-за чего код может вести себя неожиданно:


0 == false // true
'' == false // true
[0] == false // true (!)


В реальных проектах это часто превращается в баги при проверке пользовательского ввода или данных из API.

Решение — использовать строгое сравнение ===, которое сравнивает и значение, и тип:


0 === false // false
'' === false // false
[0] === false // false


Нюансы:
– Валидацию входных данных всё равно нужно делать вручную: === не спасёт, если вы сравниваете строку "42" и число 42.
– Иногда == может быть уместным (например, при проверке на null и undefined одновременно: value == null). Но такие кейсы стоит явно документировать, чтобы не путать коллег.
– Линтеры вроде ESLint (eqeqeq: "error") позволяют сразу исключить двусмысленное сравнение на уровне правил проекта.
  • 👍 7
  • 🔥 5
  • ❤ 2
More from @js_for_devs
  1. Sep 30, 2026Тут больше не будет новостей, статей и постов про JavaScript/TypeScript. JS/TS-разработчик…
  2. Feb 10, 2026Развлекался на выходных со Skills от Remotion. В итоге получился этот промо-ролик. В Remot…
  3. Jan 21, 2026Наконец-то могу видеть свои tailwind-классы без бесконечного скролла..
  4. Jan 20, 2026🔥 Почему свой игровой движок — это проще, чем кажется В новой, большой и практической ста…
  5. Jan 12, 2026⚙️ Инструменты для JavaScript больше не пишут на JavaScript — и вот почему это осознанный…
  6. Dec 29, 2025🎄 Итоги года 4Devs 2025 На прошлой неделе Habr опубликовал итоги года — и наш проект попа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →