Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: object, strict, nan

Чем Object.is отличается от ===?

Вопрос проверяет знание тонких различий между механизмами сравнения значений в JavaScript.

Короткий ответ

Object.is и === похожи, но ведут себя по-разному в двух случаях: при сравнении NaN и +0 / -0. Object.is(NaN, NaN) возвращает true, а NaN === NaN — false. Также Object.is(+0, -0) возвращает false, тогда как +0 === -0 — true. Во всех остальных случаях поведение одинаково.

Длинный ответ

Object.is был добавлен, чтобы дать более “точное” сравнение значений.

Определение

Определение: Object.is — метод сравнения, который проверяет значения по алгоритму SameValue.

Ключевые отличия от ===

Есть ровно два отличия.

1) NaN

Object.is(NaN, NaN); // true
NaN === NaN;         // false

2) Знаковый ноль

Object.is(+0, -0); // false
+0 === -0;         // true

Почему это важно

  • для низкоуровневых сравнений

  • для корректной работы с числовыми алгоритмами

  • для библиотек и фреймворков

Связь с React

React использует сравнение ссылок (===) для оптимизации, но в некоторых местах (например, Object.is в хуках) используется именно Object.is для корректной обработки NaN.

Когда что использовать

  • === — по умолчанию в прикладном коде

  • Object.is — когда важны крайние случаи

Вывод: Object.is отличается от === только в сравнении NaN и +0 / -0, но именно эти отличия делают его более точным инструментом сравнения.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#object

#strict

#nan

Подпишись на React Developer в телеграм