← Все вопросы
Чем == отличается от === и почему '0' == 0 это true?
24
Запутался в равенствах. Почему строка '0' равна числу 0 через ==? И когда вообще использовать === ?
4 ответа
41
✓ Принятый ответ — помог автору
== сравнивает «нестрого» — перед сравнением приводит типы к общему. === сравнивает «строго» — и тип, и значение, без приведения.
Именно поэтому:
'0' == 0 // true — строка '0' приводится к числу 0
'0' === 0 // false — разные типы (string vs number)
При == движок видит строку и число и превращает строку в число: Number('0') это 0, а 0 == 0 уже true.
Правило: всегда используй ===. == оставь только для одного хитрого случая — проверки на null/undefined одновременно: x == null ловит и null, и undefined.
Дарина Козлова наконец-то понял разницу 🙏 · 7 месяцев назад
16
Используй === и не думай о приведении типов. Все странности == ('' == 0, false == [], null == undefined) идут оттуда.
9
Всегда ===.
6
Линтеры (ESLint, правило eqeqeq) специально ругаются на == именно по этой причине. Включи и забудь про проблему.
Ваш ответ
Войдите, чтобы ответить на вопрос.