Выбор ответа Middle Объекты и массивы обновлено

includes и indexOf с NaN

Вопрос

Что выведет код?

const values = [1, NaN];
console.log(values.includes(NaN), values.indexOf(NaN));

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: true -1. indexOf сравнивает строгим ===, а NaN === NaN ложно, поэтому -1. includes использует алгоритм SameValueZero, где NaN равен NaN, поэтому true.

Варианты ответа

  1. false -1
  2. true 1
  3. true -1правильный ответ
  4. false 1

Разбор

indexOf сравнивает строгим ===, а NaN === NaN ложно, поэтому -1. includes использует алгоритм SameValueZero, где NaN равен NaN, поэтому true. Разница пригодится, если в данных бывают NaN: проверяйте наличие через includes, а индекс через findIndex(Number.isNaN).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.